Hadoop3.1.1高可用完全分布式环境搭建

学习大数据技术依赖于大数据环境,搭建一个大数据环境是学习大数据很重要的一部分,话不多说,现在我们来搭建一个hadoop3.1.1高可用完全分布式环境

  1. 本环境我们用到的软件版本
    cetos7,zookeeper-3.4.13.tar.gz,jdk-8u191-linux-x64.tar.gz,hadoop-3.1.1.tar.gz
  2. 在linux上安装jdk,配置环境变量
export JAVA_HOME=/bigdata/hadoop/tools/jdk8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
  1. 修改hadoop.env文件
export JAVA_HOME=/bigdata/hadoop/tools/jdk8
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
  1. 修改core.site.xml文件
<configuration>
    <property>
  		<name>fs.defaultFS</name>
  		<value>hdfs://mycluster</value>
</property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/bigdata/hadoop/ha</value>
    </property>
<property>
      <name>hadoop.http.staticuser.user</name>
      <value>root</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>node02:2181,node03:2181,node04:2181</value>
 </property>
</configuration>
  1. 修改hdfs.site.xml
<configuration>
   <property>
        <name>dfs.replication</name>
        <value>2</value>
   </property>
   <property>
  		<name>dfs.nameservices</name>
  		<value>mycluster</value>
</property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node01:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node02:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node01:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node02:9870</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>
qjournal://node01:8485;node02:8485;node03:8485/mycluster
</value>
</property>

<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
</property>


<property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
</property>

<property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/root/.ssh/id_rsa</value>
</property>

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/bigdata/hadoop/ha/journalnode</value>
</property>

<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

6.实现各机器之间免密登录
(1)在node01机器上,进入~/.ssh目录,输入命令:ssh-keygen -t rsa,然后一直输入回车键
(2)在node02机器上,输入命令:ssh-keygen,然后一直输入回车键
(3)在node03机器上进入root用户,输入命令:ssh-keygen,然后一直输入回车键

(4)在node01机器上输入命令:ssh-copy-id -i node01,然后输入对应密码,再输入ssh-copy-id -i node02,输入对应密码,然后输入命令:ssh-copy-id -i node03
(5)在node02机器上输入命令:ssh-copy-id -i node01,然后输入对应密码,再输入ssh-copy-id -i node02,输入对应密码,然后输入命令:ssh-copy-id -i node03;
(6)在node03机器上输入命令:ssh-copy-id -i node01,然后输入对应密码,再输入ssh-copy-id -i node02,输入对应密码,然后输入命令:ssh-copy-id -i node03
(7)在机器node01中,输入命令:ssh node02即可免密登录机器node02,输入命令:ssh node03即可免密登录机器node03
(8)注意 .ssh目录的权限必须是700, .ssh/authorized_keys文件权限必须是600

7.然后开始远程传输
scp -r hadoop-3.1.1/ node01:/bigdata/hadoop/tools/hadoop-3.1.1
scp -r hadoop-3.1.1/ node02:/bigdata/hadoop/tools/hadoop-3.1.1
scp -r hadoop-3.1.1/ node03:/bigdata/hadoop/tools/hadoop-3.1.1
scp -r hadoop-3.1.1/ node04:/bigdata/hadoop/tools/hadoop-3.1.1

8.配置hadoop的环境变量
Vi + /etc/profile

export HADOOP_HOME=/bigdata/hadoop/tools/hadoop-3.1.1
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

远程将/etc/profile文件发送给其它机器
scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
source /etc/profile

9.格式化hdfs
hdfs namenode -format

10.启动hdfs
start-dfs.sh,ss -nal 查看监听端口

11.关闭hdfs
stop-dfs.sh

12.在node02,node03,node04上添加zookeeper
(1)下载zookeeper-3.4.13.tar.gz
(2)解压 tar -zxvf zookeeper-3.4.13.tar.gz -C /bigdata/hadoop/tools/
(3)配置zookeeper的环境变量
Vi + /etc/profile

export  ZOOKEEPER_HOME=/bigdata/hadoop/tools/zookeeper-3.4.13
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin

(4)将/etc/profile文件分发到node03,node04
scp /etc/profile node03:/etc/ 分发后source /etc/profile
(5)修改zookeeper的conf目录
Cd conf目录,mv zoo_sample.cfg zoo.cfg (如果不修改zookeeper读不到这个配置)
修改 vi + zoo.cg
修改1.dataDir=/bigdata/hadoop/zk
新增2.
server.1=node02:2888:3888 server.2=node03:2888:3888 server.3 =node04:2888:3888
(6)将zookeeper文件分发到node03,node04

scp -r zookeeper-3.4.13/ node04:`pwd`

(7)在node02,node03,node04中创建文件夹,路径为dataDir=/bigdata/hadoop/zk
mkdir -p /bigdata/hadoop/zk
然后向改路径下的myid文件中追加内容
echo 1 > /bigdata/hadoop/zk/myid
cat /bigdata/hadoop/zk/myid
同理node03,node04做同样的操作,但是node03要追加2,node04要追加3,要与server.1,2,3对应
(8)将node02,node03,node04节点的zookeeper启动
命令: zkServer.sh start,使用zkServer.sh status查看启动状态,当看到leader,follow信息的时候说明配置成功了,停止zookeeper, zkServer.sh stop,连接客户端可以使用zkCli.sh命令,查询根目录下的文件ls /

13.启动JournalNode ,分布在node01,node02,node03
hdfs --daemon start journalnode,(停止命令是hdfs --daemon stop journalnode )

14.格式化node01(注意只能选node01或者node02格式化)
hdfs namenode -format

15.启动namenode
hadoop-daemon.sh start namenode或者hdfs --daemon start namenode
然后在node02服务器上执行命令进行namenode数据同步,hdfs namenode -bootstrapStandby
如果clusterId相同,说明同步成功了

16.在node01节点上将zookeeper进行格式化
hdfs zkfc -formatZK

17.在node01上启动hdfs
start-dfs.sh,然后可以输入node01:9870/node02:9870查看hdfs的图形化界面
测试高可用
1.先停止node01上节点的namenode,命令:hdfs --daemon stop namenode,然后再访问node02,node02上的namenode变成了active,然后重新启动node01上的namenode,node02仍然是namenode(active)
2.停止node02上面的zkfc,命令:hdfs --daemon stop zkfc,结果node01变成了active,node02变成了standby,开启zkfc命令,hdfs --daemon start zkfc

希望对大家有帮助,有不足的地方欢迎指出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值