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的配置完毕,可以通过浏览器访问来查看部署是否成功


0 0
原创粉丝点击