hadoop2.7.0集群搭建
来源:互联网 发布:web编程包括哪些内容 编辑:程序博客网 时间:2024/04/29 19:49
Hadoop2.7.0集群搭建
1. 系统配置
Ø 电脑1(LenovoE420),win7 64位系统,8G内存,此电脑虚拟机上运行两个ubuntu14.10系统。
Ø 电脑2(LenovoSL410),win7 64位系统,4G内存,此电脑虚拟机上运行一个ubuntu14.10系统。
Ø 虚拟机:Vmware10.0
Ø Hadoop2.7.0
Ø Zookeeper3.4.6
2. 集群规划
由于本人电脑配置太差,经过实际操作发现E420最多只能运行两台虚拟机ubuntu系统,所以就在另一台电脑SL410上搭建了另一个虚拟机ubuntu系统,其具体规划如下:
主机名
IP
安装软件
运行的进程
Ubuntu1
192.168.1.120
Jdk,hadoop
zookeeper
NameNode、DFSZKFailoverController、DataNode、NodeManager、JournalNode、QuorumPeerMain
Ubuntu2
192.168.1.121
Jdk,hadoop
zookeeper
NameNode,DFSZKFailoverController,DataNode、NodeManager、JournalNode、QuorumPeerMain
Ubuntu3
192.168.1.122
Jdk,hadoop
zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain,ResourceManager
说明:
在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。ActiveNameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。
在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条
数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当
Active NameNode挂掉了,会自动切换StandbyNameNode为standby状态。
3. 两台电脑之间的通信
Ø 按路径“控制面板/网络和Internet/网络和共享中心/无线网络连接/详细信息”进入网络连接详细信息界面查看Win7网络通信相关信息。
在“网络连接详细信息”中要注意以下几个属性:描述(此属性用于在虚拟机中桥接通信时选择桥接目标),IPv4地址,IPv4默认网关,以下是我的具体配置
电脑
类型
描述
IPv4地址
IPv4默认网关
E420
1x1 11b/g/n wireless LAN PCI Express Half Mini Card Adapter
192.168.1.104
192.168.1.1
SL410
Intel(R) WIFI Link 1000 BGN
192.168.1.103
192.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的方式为shuffleserver -->
<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/hadooproot@ubuntu2:/home/brian/hadoop/
scp -r /home/brian/hadoop/hadooproot@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.shstart 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/tmproot@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的配置完毕,可以通过浏览器访问来查看部署是否成功
- hadoop2.7.0集群搭建
- Hadoop2.7.0 HA高可靠性集群搭建
- hadoop2.0集群搭建
- hadoop2/CDH4集群搭建
- Hadoop2.2.0集群搭建
- hadoop2.2.0集群搭建
- hadoop2.2.0集群搭建
- Hadoop2.4.1集群搭建
- Hadoop2.4.1集群搭建
- Hadoop2.6.0集群搭建
- hadoop2.2.0集群搭建
- Hadoop2.7.1集群搭建
- hadoop2.2.0集群搭建
- Hadoop2.2.0集群搭建
- hadoop2集群搭建
- Hadoop2集群搭建
- 搭建hadoop2.6集群
- hadoop2.6.集群搭建
- 嵌入式软件开发培训笔记——基于S5PC100的课程设计
- HDU 2011 多项式求和
- mysql command line client 闪退的解决办法
- 3D摇奖机源码
- HDU 2012 素数判定
- hadoop2.7.0集群搭建
- Android应用程序UI硬件加速渲染的Display List渲染过程分析
- hdu 5249(set + queue)
- fedora19 安装tftp服务器
- linux编程学习1-列举一个目录下的文件
- Simplify Path Leetcode71
- HDU 2013 蟠桃记
- vim配置及插件安装管理
- Combination Sum II