作者:empty 出版社:empty |
Hadoop2.7.0集群搭建
1.系统配置
电脑1(Lenovo E420),win7 64位系统,8G内存,此电脑虚拟机上运行两个ubuntu14.10系统。
电脑2(Lenovo SL410),win7 64位系统,4G内存,此电脑虚拟机上运行一个ubuntu14.10系统。
虚拟机:Vmware10.0
Hadoop2.7.0
Zookeeper3.4.6
2.集群规划
由于本人电脑配置太差,经过实际操作发现E420最多只能运行两台虚拟机ubuntu系统,所以就在另一台电脑SL410上搭建了另一个虚拟机ubuntu系统,其具体规划如下:
主机名IP安装软件运行的进程
Ubuntu1192.168.1.120Jdk,hadoop
zookeeperNameNode、DFSZKFailoverController、DataNode、NodeManager、JournalNode、QuorumPeerMain
Ubuntu2192.168.1.121Jdk,hadoop
zookeeperNameNode,DFSZKFailoverController,DataNode、NodeManager、JournalNode、QuorumPeerMain
Ubuntu3192.168.1.122Jdk,hadoop
zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain,ResourceManager
说明:
在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。
在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条
数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当
Active NameNode挂掉了,会自动切换Standby NameNode为standby状态。
3.两台电脑之间的通信
按路径“控制面板/网络和Internet/网络和共享中心/无线网络连接/详细信息”进入网络连接详细信息界面查看Win7网络通信相关信息。
在“网络连接详细信息”中要注意以下几个属性:描述(此属性用于在虚拟机中桥接通信时选择桥接目标),IPv4地址,IPv4默认网关,以下是我的具体配置
电脑
类型描述IPv4地址IPv4默认网关
E4201x1 11b/g/n wireless LAN PCI Express Half Mini Card Adapter192.168.1.104192.168.1.1
SL410Intel(R) WIFI Link 1000 BGN192.168.1.103192.168.1.1
设置虚拟机网络信息
1)按路径“编辑(E)/虚拟网络编辑器(N)”进入网络编辑器将WMnet0的VMnet信息设置成桥接模式,“桥接到”选项为上文提到的描述信息,其实这个描述信息就是当前电脑的网卡名称,如下图所示:
2)按路径“虚拟机(M)/设置(S)”进入虚拟机设置界面,选择网络适配器为“桥接模式”,如下图所示:
3)在ubuntu命令行Vim /etc/network/interfaces设置ubuntu IP,如下所示:
注意:address 192.168.1.120(此IP必须和win7 IP在同一个网段)
gateway 192.168.1.1 (此网关必须和win7 的网关相同)
4)在ubuntu命令行vim /etc/hostname中设置ubuntu主机名,如下图所示:
5)在ubuntu命令行vim /etc/hosts 中设置ubuntu主机名和ip地址的对应关系,如下图所示:
6)验证各系统之间是否能够ping通。
4.安装配置zookeeper集群
1)解压zookeeper压缩包到/home/brian/hadoop
tar –zxvf zookeeper-3.4.6.tar.gz –C /home/brian/hadoop
mv /home/brian/hadoop/zookeeper-3.4.6 /home/brian/hadoop/zk
2)在/home/brian/hadoop/zk/conf修改zookeeper配置zoo.cfg,具体配置如下图所示:
3)在/home/brian/hadoop/zk中设置创建tmp目录
Mkdir /home/brian/hadoop/zk/tmp
4)在/home/brian/hadoop/zk/tmp目录中创建空文件myid,并写入1
vim /home/brian/hadoop/zk/tmp/myid。
5)将配置好的zookeeper拷贝到ubuntu2和ubuntu3
scp -r /home/brian/hadoop/zk/ root@ubuntu2:/home/brian/hadoop
scp -r /home/brian/hadoop/zk/ root@ubuntu3:/home/brian/hadoop
6)在ubuntu2和ubuntu3中分别修改myid为2和3。
5.安装配置hadoop集群
1)解压hadoop压缩包到/home/brian/hadoop
tar -zxvf hadoop-2.7.0.tar.gz -C /home/brian/hadoop/
2)安装hadoop
mv /home/brian/hadoop/hadoop-2.7.0 /home/brian/hadoop/hadoop
在~/.bashrc中配置hadoop的安装信息,如下图所示:
6.配置hadoop
hadoop2.7.0的所有配置文件从存在/home/brian/hadoop/hadoop/etc/hadoop之中。
cd /home/brian/hadoop/hadoop/etc/hadoop
1)修改hadoop-env.sh
export JAVA_HOME=/home/brian/hadoop/jdk
2)修改core-site.xml
configuration>
!-- 指定hdfs的nameservice为ns1 -->
property>
name>fs.defaultFS /name>
value>hdfs://ns1 /value>
/property>
!-- 指定hadoop临时目录 -->
property>
name>hadoop.tmp.dir /name>
value>/home/brian/hadoop/hadoop/tmp /value>
/property>
!-- 指定zookeeper地址 -->
property>
name>ha.zookeeper.quorum /name>
value>ubuntu1:2181,ubuntu2:2181,ubuntu3:2181 /value>
/property>
/configuration>
3)修改hdfs-site.xml
configuration>
!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
property>
name>dfs.nameservices /name>
value>ns1 /value>
/property>
!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
property>
name>dfs.ha.namenodes.ns1 /name>
value>nn1,nn2 /value>
/property>
!-- nn1的RPC通信地址 -->
property>
name>dfs.namenode.rpc-address.ns1.nn1 /name>
value>ubuntu1:9000 /value>
/property>
!-- nn1的http通信地址 -->
property>
name>dfs.namenode.http-address.ns1.nn1 /name>
value>ubuntu1:50070 /value>
/property>
!-- nn2的RPC通信地址 -->
property>
name>dfs.namenode.rpc-address.ns1.nn2 /name>
value>ubuntu2:9000 /value>
/property>
!-- nn2的http通信地址 -->
property>
name>dfs.namenode.http-address.ns1.nn2 /name>
value>ubuntu2:50070 /value>
/property>
!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
property>
name>dfs.namenode.shared.edits.dir /name> value>qjournal://ubuntu1:8485;ubuntu2:8485;ubuntu3:8485/ns1 /value>
/property>
!-- 指定JournalNode在本地磁盘存放数据的位置 -->
property>
name>dfs.journalnode.edits.dir /name>
value>/home/brian/hadoop/hadoop/journal /value>
/property>
!-- 开启NameNode失败自动切换 -->
property>
name>dfs.ha.automatic-failover.enabled /name>
value>true /value>
/property>
!-- 配置失败自动切换实现方式 -->
property>
name>dfs.client.failover.proxy.provider.ns1 /name>
value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider /value>
/property>
!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
property>
name>dfs.ha.fencing.methods /name>
value>
sshfence
shell(/bin/true)
/value>
/property>
!-- 使用sshfence隔离机制时需要ssh免登陆 -->
property>
name>dfs.ha.fencing.ssh.private-key-files /name>
value>/root/.ssh/id_rsa /value>
/property>
!-- 配置sshfence隔离机制超时时间 -->
property>
name>dfs.ha.fencing.ssh.connect-timeout /name>
value>30000 /value>
/property>
/configuration>
4)修改mapred-site.xml
configuration>
!-- 指定mr框架为yarn方式 -->
property>
name>mapreduce.framework.name /name>
value>yarn /value>
/property>
/configuration>
5)修改yarn-site.xml
configuration>
!-- 指定resourcemanager地址 -->
property>
name>yarn.resourcemanager.hostname /name>
value>ubuntu3 /value>
/property>
!-- 指定nodemanager启动时加载server的方式为shuffle server -->
property>
name>yarn.nodemanager.aux-services /name>
value>mapreduce_shuffle /value>
/property>
/configuration>
6)修改slaves
slaves是指定子节点的位置,因为要在ubuntu1上启动HDFS、在ubuntu3启动yarn,所以ubuntu1上的slaves文件指定的是datanode的位置,ubuntu3上的slaves文件指定的是nodemanager的位置
cd /home/brian/hadoop/hadoop/etc/hadoop/
vim slaves
ubuntu1
ubuntu2
ubuntu3
7.将配置好的hadoop拷贝到ubuntu2和ubuntu3
scp -r /home/brian/hadoop/hadoop root@ubuntu2:/home/brian/hadoop/
scp -r /home/brian/hadoop/hadoop root@ubuntu3:/home/brian/hadoop/
*********************注意:以下操作必须严格按照顺序*****************************
8.启动zookeeper集群(在ubuntu1,ubuntu2,ubuntu3的/home/brian/hadoop/zk/bin/里开启)
cd /home/brian/hadoop/zk/bin
./zkServer.sh start(启动zookeeper节点)
./zkServer.sh status(查看zookeeper状态)
9.启动journalnode(在ubuntu1,ubuntu2,ubuntu3的/home/brian/hadoop/hadoop/sbin里启动)
hadoop-daemons.sh start journalnode
jps(依次在每个节点中查看各节点是否多了Journalnode进程)
10.格式化HDFS
在ubuntu1上执行格式化命令
hdfs namenode -format
格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/home/brian/hadoop/hadoop/tmp,然后将/home/brian/hadoop/hadoop/tmp拷贝到ubuntu2和ubuntu3的/home/brian/hadoop/hadoop下。
scp -r /home/brian/hadoop/hadoop/tmp root@ubuntu2:/home/brian/hadoop/hadoop
scp -r /home/brian/hadoop/hadoop/tmp root@ubuntu3:/home/brian/hadoop/hadoop
11.格式化ZK
在ubuntu1上执行格式化命令
hdfs zkfc -formatZK
12.启动HDFS
在ubuntu1的/home/brian/hadoop/hadoop/sbin中执行start-dfs.sh命令
cd /home/brian/hadoop/hadoop/sbin/
start-dfs.sh
启动之后,分别进入ubuntu1,ubuntu2,ubuntu3中jps,查看是否多了NameNode 和 DFSZKFailoverController两个进程
13.启动YARN
在ubuntu3中的/home/brian/hadoop/hadoop/sbin中执行start-yarn.sh命令
cd /home/brian/hadoop/hadoop/sbin/
start-yarn.sh
是在ubuntu3上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动
14.到此,hadoop2.7.0的配置完毕,可以通过浏览器访问来查看部署是否成功
empty
empty