hadoop2.5.2HDFS HA搭建

来源:互联网 发布:淘宝卖家新手全攻略 编辑:程序博客网 时间:2024/04/28 06:47

hadoop2.5.2全分布式HDFS HA搭建

最近老师布置了个大作业,需要搭建hadoop存储数据,所以照着网上的各种版本教程努力的搭了一个,搭建的过程可谓声泪俱下。。。(此处省略一万字),所以想着以后要是重新搭建hadoop可以有所参照,所以写下这个博客。

本次搭建主要有如下几个步骤:
- 安装VM以及ubuntu,配置好4台虚拟机
- 更改4台虚拟机的主机名以及hosts文件并配置java环境
- 用SFTC将下载好的hadoop-2.5.X-x64.tar.gz和zookeeper-3.4.6传到虚拟机中
- 解压两个压缩文件夹并开始配置


节点分布如下
节点分布为

先行准备及虚拟机配置

  • hadoop-2.5.1-x64.tar.gz下载地址百度云链接密码00vm Ctrl + B
  • zookeeper-3.4.6去官网下载
  • VM及Ubuntu14.04.5自行下载

先装一台虚拟机,分配20G的存储空间,1G内存,网卡选择NAT。虚拟机名称命名为node4(因为之前配过由3台虚拟机组成的hadoop1.X,所以这是第4台虚拟机),用户名为hadoop,密码随意。配置好之后选择完全克隆,复制3台虚拟机。

克隆完成后将4台虚拟机全部打开,依次修改主机名。
-sudo gedit etc/hostname #要改成的主机名
-sudo gedit etc/hosts #将4台虚拟机的ip地址写进去

重启4台虚拟机,4台虚拟机分别为 hadoop@node4、hadoop@node5、hadoop@node6、hadoop@node7

配置java环境

- sudo apt-get install openjdk-7-jre openjdk-7-jdk

安装好后需要找到相应的安装路径,这个路径是用于配置JAVA_HOME环境变量的
这里直接放出路径/usr/lib/jvm/java-7-openjdk-amd64

接着配置JAVA_HOME环境变量,为了方便,我们在~/.bashrc 中进行设置

- sudo gedit ~/.bashrc

在文件最前面添加如下内容

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

保存并且输入如下命令使该环境变量生效

- source ~/.bashrc 

任意位置输入java验证是否配置成功

安装ssh、配置无密钥登录

- sudo apt-get install openssh-server

安装完后即可通过 ssh hadoop@node5 访问node5虚拟机
分别在4台虚拟机上输入如下命令

- ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa- cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

保证登录本地免密码,然后把公钥文件 id_dsa.pub 拷贝到其他虚拟机上去

- scp id_dsa.pub hadoop@node5:~然后在node5的命令行里输入- cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

如法炮制使node4、node5可以免密码登录到其他node

配置hadoop以及zookeeper

在node4上

- tar -zxvf hadoop-2.5.1-x64.tar.gz- tar -zxvf zookeeper-3.4.6.tar.gz

配置hadoop-env.sh

- cd hadoop-2.5.1/etc/hadoop- sudo gedit hadoop-env.sh找到 export JAVA_HOME=${JAVA_HOME}改为 export JAVA_HOME=${JAVA_HOME:-"/usr/lib/jvm/java-7-openjdk-amd64"}

配置hdfs-site.html

- sudo gedit hdfs-site.html找到configuration标签,在标签内插入如下内容<configuration><property>  <name>dfs.nameservices</name>  <value>mxy</value></property><property>  <name>dfs.ha.namenodes.mxy</name>  <value>nn1,nn2</value></property><property>  <name>dfs.namenode.rpc-address.mxy.nn1</name>  <value>node4:8020</value></property><property>  <name>dfs.namenode.rpc-address.mxy.nn2</name>  <value>node5:8020</value></property><property>  <name>dfs.namenode.http-address.mxy.nn1</name>  <value>node4:50070</value></property><property>  <name>dfs.namenode.http-address.mxy.nn2</name>  <value>node5:50070</value></property><property>  <name>dfs.namenode.shared.edits.dir</name>  <value>qjournal://node5:8485;node6:8485;node7:8485/mxy</value></property><property>  <name>dfs.client.failover.proxy.provider.mxy</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>/home/hadoop/.ssh/id_dsa</value></property><property>  <name>dfs.journalnode.edits.dir</name>  <value>/path/to/journal/node/local/data</value></property><property>  <name>dfs.journalnode.edits.dir</name>  <value>/opt/jn/data</value></property><property>   <name>dfs.ha.automatic-failover.enabled</name>   <value>true</value> </property></configuration> 

其中mxy为hadoop集群名字,可以改为其他,但是要注意,集群名不能带下划线!!!

配置core-site.xml

- sudo gedit core-site.xml找到configuration标签,在标签内插入如下内容<configuration><property>  <name>fs.defaultFS</name>  <value>hdfs://mxy</value></property> <property>   <name>ha.zookeeper.quorum</name> <value>node4:2181,node5:2181,node6:2181</value> </property><property>  <name>hadoop.tmp.dir</name>  <value>/opt/hadoop2</value></property></configuration>

mxy为集群名可以更改

配置slaves

- sudo gedit slaves- 插入node5- 插入node6- 插入node7

配置zoo.cfg

- cd ~/zookeeper-3.4.6/conf找到zoo_sample.cfg将其重命名为zoo.cfg- sudo gedit zoo.cfg找到dataDir,修改为dataDir=/opt/zookeeper在文件最下部插入server.1=node4:2888:3888server.2=node5:2888:3888server.3=node6:2888:3888

启动zookeeper

分别在node4、node5、node6的建立/opt/zookeeper (注意opt文件权限问题)

- cd /- sudo mkdir opt/zookeeper- sudo chmod -R 777 /opt- cd /opt/zookeeper- sudo gedit myid在文档中写入数字编号:node4中的myid文件写入1,node5写2,node6写3

将zookeeper-3.4.6文件拷贝到node5、node6上

- cd ~- scp -r zookeeper-3.4.6 hadoop@node5:~/- scp -r zookeeper-3.4.6 hadoop@node6:~/

在node4上为zookeeper配置环境变量

- sudo gedit /etc/profile在unset i之前插入export PATH=$PATH:/home/hadoop/zookeeper-3.4.6/bin

退出保存执行如下语句

- source /etc/profile- scp /etc/profile hadoop@node5:/etc/- 在node5中执行source /etc/profile- scp /etc/profile hadoop@node6:/etc/- 在node6中执行source /etc/profile

在node4、5、6的任意目录下输入zkServer.sh start启动zookeeper
输入jps检查是否启动
出现QuorumPeerMain则为成功

启动JournalNode

- scp -r /home/hadoop/hadoop-2.5.1 hadoop@node5:/home/hadoop/- scp -r /home/hadoop/hadoop-2.5.1 hadoop@node6:/home/hadoop/- scp -r /home/hadoop/hadoop-2.5.1 hadoop@node7:/home/hadoop/

在node5、6、7中分别启动journalnode

- cd ~/hadoop-2.5.1/sbin- ./hadoop-daemon.sh start journalnode

输入jps检查
可以使用冒号来定义对齐方式:

初始化NameNode

在node4上

- cd ..- cd bin- ./hdfs namenode -format

启动node4上的namenode,把namenode信息复制到node5上
node4:

- cd ..- cd sbin- ./hadoop-daemon.sh start namenode

node5:

- cd ../bin- ./hdfs namenode -bootstrapStandby- cd ../sbin- ./stop-dfs.sh

初始化ZKFC

在任意namenode(node4或node5上)执行以下命令

- cd ../bin- ./hdfs zkfc -formatZK

配置完成,启动全部节点

- cd ../sbin- ./start-dfs.sh

别忘了修改window/system32/driver/etc/hosts文件哦

然后浏览器输入http://node4:50070 和 http://node5:50070
即可查看两个namenode节点情况
ps:输入node4或5的ip:50070也可以

0 0