Hadoop、hdfs、yarn分布式集群搭建

Hadoop集群的搭建,一般为了数据安全都是在内网使用,所以只建立内网环境就可以了。这里只做四台机器,两个NameNode,两个节点,以后如果需要可以很容易添加节点。

一、配置统一的hostname

为了方便管理,我采用host方式来映射每台机器。配置如下:

10.0.0.6  zh6        (NameNode)
10.0.0.8  zh8        (Secondary NameNode)
10.0.0.9  zh9        (DataNode)
10.0.0.10 zh10       (DataNode)

当然四台机器的名字都要修改为响应zh+ip最后位的数字。然后将该host配置复制到每台机器上,修改hosts配置。


二、SSH免密钥登录

这一步是一定要做的,不然后面启动后会不停报错而终止。应为机器间互相有数据访问,但是好像不能自动输入密钥,也没有类似的配置可以设置机器间的密钥。所以SSH公钥授权的方式还是比较方便和安全的。一般我只会配置NameNode到所有DataNode的SSH面密钥登陆就可以了,但是是双向的,DataNode到NameNode也要配置。下面是一台机器的设置方法,每台机器设置方法相同,不一一举例了。

进入当前用户的.ssh目录
#cd ~/.ssh   (我是root用户,所以是在/root/.ssh/目录下,如果没有可以手动创建一个)

生成ssh密钥
#ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ce:27:21:b5:9c:50:89:53:df:6a:8b:b1:f5:27:93:ad root@zh6
The key's randomart image is:
+--[ RSA 2048]----+
|       oo.       |
|      o... .     |
|      ... . .    |
|       + o .     |
|      . S +      |
|       + B o o   |
|        * o = o  |
|         o   =   |
|            E    |
+-----------------+

拷贝公钥到目标机器
#ssh-copy-id -i root@zh8
The authenticity of host 'zh8 (10.0.0.8)' can't be established.
RSA key fingerprint is c0:56:23:35:09:65:17:91:fd:6b:07:6f:2f:bb:d0:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'zh8,10.0.0.8' (RSA) to the list of known hosts.
root@zh8's password: 
Now try logging into the machine, with "ssh 'root@zh8'", and check in:
 
  .ssh/authorized_keys
 
to make sure we haven't added extra keys that you weren't expecting.
测试一下登录成功
#ssh zh8

基本需要配置一下登陆关系:
zh6->zh6
zh6->zh8
zh6->zh9
zh6->zh10
zh8->zh8

因为使用了host,所以访问本机也需要设置免密钥登陆。



三、配置JDK

应为要使用Java,所以必须要配置JDK。这里我使用的版本是:
jdk1.7.0_25

首先到官网下载jdk包,解压到指定目录。然后添加环境变量。

#vim /etc/profile

在文件的末尾添加如下内容:


# JDK
export JAVA_HOME=/local/server/jdk1.7.0_25
export JAVA_BIN=/local/server/jdk1.7.0_25/bin
export CLASSPATH=.:$CALSSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/calsses12.jar
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre

使环境变量文件生效:
#source /etc/profile

测试一下:
#java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

OK, 配置成功!同样的方式在每台机器上进行配置。

四、Hadoop配置

公共配置

slaves :

zh9
zh10

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://zh6:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop/temp/hadoop-${user.name}</value>
        <description>A base for other temporary directories.</description>
    </property>
</configuration>

hadoop-env.sh添加JAVA_HOME

export JAVA_HOME=/local/server/jdk1.7.0_25


mapred-env.sh

export JAVA_HOME=/local/server/jdk1.7.0_25

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>zh6:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>zh6:19888</value>
    </property>
</configuration>

yarn-env.sh

export JAVA_HOME=/local/server/jdk1.7.0_25
 
yarn-site.xml

<configuration>
 
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <description>The hostname of the RM.</description>
        <name>yarn.resourcemanager.hostname</name>
        <value>zh6</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>2</value>
    </property>
</configuration>

创建目录:
#mkdir /data/hadoop/temp
 
NameNode和Secondary NameNode配置

masters
zh6

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/data/hadoop/name</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>zh8:50090</value>
        <description>The secondary namenode http server address and port.</description>
    </property>
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/local/server/hadoop/etc/hadoop/excludes</value>
    </property>
</configuration>

注:/local/server/hadoop/etc/hadoop/excludes 该文件是动态删除节点用的,如果不需要就删除该配置,或手动添加文件,名字可以随意,只要与配置文件一致即可。

创建目录:
#mkdir /data/hadoop/name

DataNode配置

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/data/hadoop/data</value>
    </property>
</configuration>

创建目录:
#mkdir /data/hadoop/data

到这里基本的配置就可以了,其他基本默认就可以,如果有特殊的要求,可以再添加配置。另外可以将配置文件做成多节点同步,这样如果节点多了,修改配置文件会方便一些,也减少因为配置遗漏导致异常抛出。

在正式启动集群之前,还要检查一个问题,每个机器的防火墙是否开启。如果开启的话,后面肯定无法正常启动。所以,要么关掉,要么就配置好白名单。

格式化NameNode:
#bin/hadoop namenode -format

格式化之前/data/hadoop/name目录是空的,格式化以后会生成current目录,里面包含文件系统的各种信息。

(责任编辑:管理员)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部