hadoop3节点hdfs ha,yarn ha配置

0 各机器职责

进程node1node2node3
NN

NameNode

11
DN

DateNode

111
JN

JournalNode

111
YARN

ResourceManage

11

NodeManager111
ZOOQuorumPeerMain111
ZKFC

DFSZKFailoverController

11
1 系统ip,hostname,hosts,环境变量配置

这里三台机器如下,具体配置略,java环境配置略

192.168.158.101 node1

192.168.158.102 node2

192.168.158.103 node3

每台机器环境变量 配置:

执行vi ~/.bash_profile,加入如下内容(目录大家根据自己实际情况更改)

export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2 免密码配置
 1 检查每台机器的防火墙是否关闭 ,防火墙需要关闭(必须,博主这一步忘了后面zookeeper怎么也不能启动成功)
 2 关闭Selinux,避免对其他服务影响,具体影响博主还不清楚,知道后更新
 3 配置免密码登录

a) 如果用户路径下存在.ssh文件夹,需要先删除 

b) 所有节点生成RSA密钥对,命令如下: 

ssh-keygen -t rsa

一路回车就好

c) 在所有节点之间建立两两互信。 

步骤如下: 

将每个机器生成的公钥id_rsa.pub的内容复制到本机的 ~/.ssh/ 的authorized_keys 文件 里。命令如下: 

cp id_rsa.pub authorized_keys 

然后,将各个机器的 authorized_keys 文件中的内容追加到其余机器上的 ~/.ssh/ authorized_keys 文件中(包括

namenode和datanode) 

d) 修改权限 

chmod 700 ~/.ssh 

 chmod 600 ~/.ssh/*

e) 经过以上步骤,ssh配置也已完成。通过以下命令验证: 

ssh 节点名

第一次连接需要密码,输入yes和机器密码就可以,以后即不用再输入。 

注意: .ssh是700    .ssh下的文件是600 这一步也千万别忘了,博主吃过亏的

3 配置zookeeper

1) 下载zookeeper包,并解压到/home/hadoop/app/ 

2) 编辑安装路径下conf/zoo.cfg文件,加入以下内容: 

tickTime=2000 

initLimit=10 

syncLimit=5 

dataDir=/home/hadoop/data/zookeeper 

clientPort=2181 

#server.x=主机名:F和F之间同步和通信端口:选举端口 

server.1=node1:2888:3888

server.2=node2:2888:3888

server.3=node3:2888:3888

右边可以配置两个端口,第一个端口用于 F和L之间的数据同步和其它通信,第二个端口用于Leader 选举过程中投票通信。 

在 Node1、Node2、Node3 的$dataDir 下新建 myid 文件,分别放入各自的 server.id,比如 Node3 的 myid

文件中写入3. 

3) 将zookeeper的文件夹分发到node2、node3 

4) 配置环境变量 

5) Zookeeper启动并检查状态  

启动zkServer.sh start

查看状态zkServer.sh status 

注意:每个节点启动后再查看状态,三节点的话必须两个以上启动成功才算成功

4 HDFS 集群 HA 环境搭建 
1 配置hadoop-env.sh

将JAVA_HOME设置为具体路径,如下

export JAVA_HOME=/home/hadoop/app/jdk1.8.0_05
2 配置core-site.xml
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://cluster1</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/data/tmp</value>
        </property>
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>node1:2181,node2:2181,node3:2181</value>
        </property>
</configuration>
3 配置hdfs-site.xml 
<configuration>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
   </property>
   <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
     <property>
        <name>dfs.name.dir</name>
        <value>/home/hadoop/data/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/home/hadoop/data/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>cluster1</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.cluster1</name>
        <value>node1,node2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.cluster1.node1</name>
        <value>node1:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.cluster1.node1</name>
        <value>node1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.cluster1.node2</name>
        <value>node2:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.cluster1.node2</name>
        <value>node2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node1:8485;node2:8485;node3:8485/cluster1</value>
    </property>
         <property>
        <name>dfs.ha.automatic-failover.enabled.cluster1</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.cluster1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop/data/journaldata/jn</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
    </property>
</configuration>
4 配置slave
node1
node2
node3
5 启动

1、启动Zookeeper集群

分别在node1、node2、node3上执行

zkServer.sh start

然后执行

zkServer.sh status

查看是否启动,确保启动后执行后面的步骤

2、格式化Zookeeper集群,目的是在Zookeeper集群上建立HA的相应节点

node1上执行(任选一节点)

hdfs zkfc  -formatZK

3、启动Journal集群

分别在node1、node2、node3分别上执行

hadoop-daemon.sh start journalnode

4、格式化集群上的一个NameNode

node1和node2上任选一个即可,这里我是在os1

hdfs namenode -format 

5、启动集群中步骤4中的NameNode

启动os1上的NameNode

hadoop-daemon.sh start namenode

6、把NameNode的数据同步到另一个NameNode上

把NameNode的数据同步到node2上,在node2中执行

hdfs namenode –bootstrapStandby

7、启动另个一NameNode

node2上执行

hadoop-daemon.sh start namenode

8、启动所有的DataNode

node1中执行

hadoop-daemons.sh start datanode

9、启动ZKFC

分别在node1、node2上执行

hadoop-daemon.sh start zkfc

6 YARN-HA环境搭建 
1 配置mapred-site.xml 
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
    </property>
</configuration>
2 配置yarn-site.xml
<property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
</property>
<!--是否启用自动故障转移。默认情况下,在启用 HA 时,启用自动故障转移。-->
<property>
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>
<!--启用内置的自动故障转移。默认情况下,在启用 HA 时,启用内置的自动故障转移。--> 
<property>
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
        <value>true</value>
</property>
<property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yarn-rm-cluster</value>
</property>
<property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>node1</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>node2</value>
</property>
<!--启用 resourcemanager 自动恢复--> 
<property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
</property>
<!--配置 Zookeeper 地址--> 
<property>
        <name>yarn.resourcemanager.zk.state-store.address</name>
        <value>node1:2181,node2:2181,node3:2181</value>
</property>
<property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>node1:2181,node2:2181,node3:2181</value>
</property>
<property>
        <name>yarn.resourcemanager.address.rm1</name>
        <value>node1:8032</value>
</property>
<property>
        <name>yarn.resourcemanager.address.rm2</name>
        <value>node2:8032</value>
</property>
<property>
        <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>node1:8034</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>node1:8088</value>
</property>
<property>
        <name>yarn.resourcemanager.scheduler.address.rm2</name>
        <value>node2:8034</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>node2:8088</value>
</property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!--执行 MapReduce 需要配置的 shuffle 过程--> 
<property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
3 将上面两个配置文件分发到各节点,然后按下面步骤启动

a)在node1执行 sbin/start-yarn.sh

jps查看ResourceManager进程是否启动,如果没有看日志排查问题后重新执行 

b) node1中成功启动ResourceManager进城后在node2执行

 sbin/yarn-daemon.sh start resourcemanager

同时打开一下web界面。 

http://node1:8088

http://node2:8088 

关闭其中一个resourcemanager,然后再启动,看看这个过程的web界面变化。 

sbin/yarn-daemon.sh start resourcemanager 
sbin/yarn-daemon.sh stop resourcemanager
4 检查一下ResourceManager状态
bin/yarn rmadmin -getServiceState rm1 
bin/yarn rmadmin -getServiceState rm2
7 Wordcount示例测试 

   1. 准备test.txt文件,内容如下:

    hello world hello hadoop

    2 .hdfs中创建test目录并上传测试文件,然后执行hadooop自带wordcount程序

 hadoop fs - mkdir -p /test
 hadoop fs -put test.txt /test
 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /test/test.txt /test/out/

出现下图代表执行成功,大家可以通过”hadoop fs -ls 输出目录“自行去看下执行结果

223330_mGJu_1023019.png

转载于:https://my.oschina.net/firstBlooded/blog/550198

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值