下面介绍高可用HDFS完全分布式的搭建步骤:
第一步:在VmVare中安装四台CentOs6.5
主机名分别为node1,node2,node3,node4,(这样配置主机名是为了搭建的时候方便和节点关联)。
第二步:分别配置这四台主机的网络。
修改/etc/sysconfig/network-scripts/下的ifcfg-eth0文件,使ONBOOT=yes,BOOTPROTO=none,再添加
以下文本:
IPADDR=192.168.42.128
PREFIX=24
GATEWAY=192.168.42.2
DNS1=8.8.8.8
指令列表
1、cd /etc/sysconfig/network-scripts/
2、vim ifcfg-eth0
截图
修改后的文本内容,其中IPADDR是虚拟机的IP地址,GATEWAY是把虚拟机的IP地址最后一位改成2
DNS1可以在宿主机的IP4地址中查看,如下图,四台主机的网络配置方法一致
第三步:配置四台主机的jdk
首先我们把自带的jdk卸载:
1)查看当前Linux系统是否已经安装java
输入 rpm -qa | grep java
2)卸载两个openJDK
输入rpm -e --nodeps 要卸载的软件
3)上传jdk到linux
4)解压jdk到/usr/local下 tar –xvf jdk-8u121-linux-x64.tar.gz –C /usr/local
5)配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去
export JAVA_HOME=/usr/local/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$PATH
6) 检查jdk是否安装成功:java - version
四台主机配置步骤一致
第四步:修改各个主机的hosts文件
1)修改/etc/hosts文件:vim /etc/hosts
第五步:同步各个主机的时间
1)各个节点(节点即主机)安装ntp命令:yum install ntp
2)同步时间:ntpdate ntp1.aliyun.com
3)可以使用date命令查看时间是否同步
第六步:配置免密登录
免密示意图:
node01->node01 node01->node02 node01->node03 node01->node04
node02->node01
1)所有节点执行 ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
步骤都一样,这里仅贴出node1操作的截图
2)在node1节点执行,将node1的公钥加入到其他节点的白名单中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node4
步骤都一样,这里仅贴出node1操作的截图
3)在node2节点执行:ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1,将node1的公钥加入到其他节点的白名单中,截图和上图差不多
第七步:上传hadoop-2.6.5.tar.gz并修改配置文件
1)首先将hadoop-2.6.5.tar.gz上传到/home目录下面,然后解压到/opt/software/hadoop文件夹下,hadoop文件夹解压前创建好
2)解压完成后修改/hadoop-2.6.5/etc/hadoop下的hdfs-env.sh配置文件,添加JAVA_HOME环境变量
3)修改hdfs-site.xml配置文件,在其中添加以下属性:
<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:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</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.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
4)修改core-site.xml配置文件,在其中添加以下属性:
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node2:2181,node3: 2181,node4:2181</value>
</property>
5)修改slaves配置文件:
6)将配置好的HDFS安装包拷贝到node2 node3 node4
7)搭建zookeeper集群并启动
将zookeeper-3.4.10上传到node2的/home目录下,解压到/opt/software/zookeeper/下
修改conf目录下的zoo_sample.cfg的名称,改为zoo.cfg
修改zoo.cfg
dataDir=/var/zfg/zookeeper
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
dataDir是用来放置zookeeper产生的临时文件,目录可以随便指定
在dataDir目录下创建一个myid文件,在这个文件中写上当前节点ID号
将配置好的zookeeper安装包拷贝到node3 node4
6)拷贝完毕后,在各自节点上创建myid号(在/var/mzj/zookeeper/创建),ID号要依次递增
7)将hadoop的指令和zookeeper的指令都配置到系统变量中,node1不用配置zookeeper指令,其他节点都要,修改/etc/profile文件,并令其生效:source /etc/profile,如下图所示:
分别在node2,node3,node4启动zookeeper
8) 格式化NameNode(创建目录以及文件)
①在node1、node2、node3分别执行如下命令
hadoop-daemon.sh start journalnode
②随机选择一台NameNode执行:
hdfs namenode -format
hadoop-daemon.sh start namenode
③另外一台NameNode节点执行:
hdfs namenode -bootstrapStandby
在两个namenode节点分别执行
hdfs zkfc -formatZK
关闭所有节点上的进程
stop-dfs.sh
启动HDFS
start-dfs.sh
启动成功在hdfs上创建一个目录:
在浏览器输入node1:50070查看刚才创建的目录
到此,高可用HDFS搭建成功