阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop2.0集群搭建详解

98次阅读
没有评论

共计 11683 个字符,预计需要花费 30 分钟才能阅读完成。

Hadoop2.0 集群搭建详解

PS:apache 提供的 hadoop-2.2.0 的安装包是在 32 位操作系统编译的,因为 hadoop 依赖一些 C ++ 的本地库,所以如果在 64 位的操作上安装 hadoop-2.2.0 就需要重新在 64 操作系统上重新编译。

1. 准备工作:(参考伪分布式搭建)

        1.1 修改 Linux 主机名

        1.2 修改 IP

        1.3 修改主机名和 IP 的映射关系

        1.4 关闭防火墙

        1.5ssh 免登陆

        1.6. 安装 JDK,配置环境变量等

2. 集群规划:

PS:在 hadoop2.0 中通常由两个 NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提供服务,而 Standby NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。

hadoop2.0 官方提供了两种 HDFS HA 的解决方案,一种是 NFS,另一种是 QJM。这里我们使用简单的 QJM。在该方案中,主备 NameNode 之间通过一组 JournalNode 同步元数据信息,一条数据只要成功写入多数 JournalNode 即认为写入成功。

通常配置奇数个 JournalNode

这里还配置了一个 zookeeper 集群,用于 ZKFC(DFSZKFailoverController)故障转移,当 Active NameNode 挂掉了,会自动切换 Standby NameNode 为 standby 状态

3. 安装步骤:

3.1. 安装配置 zooekeeper 集群

3.1.1 解压

tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/

3.1.2 修改配置

cd /cloud/zookeeper-3.4.5/conf/

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

修改:dataDir=/cloud/zookeeper-3.4.5/tmp

在最后添加:

server.1=hadoop01:2888:3888

server.2=hadoop02:2888:3888

server.3=hadoop03:2888:3888

保存退出

然后创建一个 tmp 文件夹

mkdir /cloud/zookeeper-3.4.5/tmp

再创建一个空文件

            touch /cloud/zookeeper-3.4.5/tmp/myid

          最后向该文件写入 ID

            echo 1 > /cloud/zookeeper-3.4.5/tmp/myid

      3.1.3 将配置好的 zookeeper 拷贝到其他节点 (首先分别在 hadoop02、

            hadoop03 根目录下创建一个 cloud 目录:mkdir /cloud)

              scp -r /cloud/zookeeper-3.4.5/ hadoop02:/cloud/

              scp -r /cloud/zookeeper-3.4.5/ hadoop03:/cloud/

   

      注意:修改 hadoop02、hadoop03 对应

              /cloud/zookeeper-3.4.5/tmp/myid 内容

          hadoop02:

            echo 2 > /cloud/zookeeper-3.4.5/tmp/myid

          hadoop03:

            echo 3 > /cloud/zookeeper-3.4.5/tmp/myid

 

      3.2. 安装配置 hadoop 集群

          3.2.1 解压

          tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/

      3.2.2 配置 HDFS(hadoop2.0 所有的配置文件都在

            $HADOOP_HOME/etc/hadoop 目录下)

      将 hadoop 添加到环境变量中

          vim /etc/profile

          export JAVA_HOME=/usr/java/jdk1.6.0_45

          export HADOOP_HOME=/cloud/hadoop-2.2.0

          export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

          cd /cloud/hadoop-2.2.0/etc/hadoop

      3.2.2.1 修改 hadoo-env.sh

        export JAVA_HOME=/usr/java/jdk1.6.0_45

 

  3,2.2.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>/cloud/hadoop-2.2.0/tmp</value>

          </property>

          <!– 指定 zookeeper 地址 –>

          <property>

              <name>ha.zookeeper.quorum</name>

              <value>

                hadoop01:2181,hadoop02:2181,hadoop03:2181

            </value>

          </property>

      </configuration>

 

  3,2.2.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>hadoop01:9000</value>

          </property>

          <!– nn1 的 http 通信地址 –>

          <property>

              <name>

                dfs.namenode.http-address.ns1.nn1

            </name>

            <value>hadoop01:50070</value>

          </property>

          <!– nn2 的 RPC 通信地址 –>

          <property>

              <name>

                dfs.namenode.rpc-address.ns1.nn2

            </name>

              <value>hadoop02:9000</value>

          </property>

          <!– nn2 的 http 通信地址 –>

          <property>

              <name>

                dfs.namenode.http-address.ns1.nn2

            </name>

              <value>hadoop02:50070</value>

          </property>

          <!– 指定 NameNode 的元数据在

                JournalNode 上的存放位置 –>

          <property>

              <name>

                dfs.namenode.shared.edits.dir

            </name>

              <value>

                qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1

            </value>

          </property>

          <!– 指定 JournalNode 在本地磁盘存放数据的位置 –>

          <property>

              <name>dfs.journalnode.edits.dir</name>

              <value>/cloud/hadoop-2.2.0/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</value>

          </property>

          <!– 使用隔离机制时需要 ssh 免登陆 –>

          <property>

              <name>

                dfs.ha.fencing.ssh.private-key-files

            </name>

              <value>/root/.ssh/id_rsa</value>

          </property>

      </configuration>

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

3.2.2.4 修改 slaves

Hadoop01

hadoop02

hadoop03

 

3.2.3 配置 YARN

3.2.3.1 修改 yarn-site.xml

<configuration>

<!– 指定 resourcemanager 地址 –>

<property>

<name>

yarn.resourcemanager.hostname

</name>

<value>hadoop01</value>

</property>

<!– 指定 nodemanager 启动时加载

server 的方式为 shuffle server –>

<property>

<name>

yarn.nodemanager.aux-services

</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

3.2.3.2 修改 mapred-site.xml

<configuration>

<!– 指定 mr 框架为 yarn 方式 –>

<property>

<name>

mapreduce.framework.name

</name>

<value>yarn</value>

</property>

</configuration>

 

3.2.4 将配置好的 hadoop 拷贝到其他节点

scp -r /cloud/hadoop-2.2.0/ hadoo02:/cloud/

scp -r /cloud/hadoop-2.2.0/ hadoo03:/cloud/

 

3.2.5 启动 zookeeper 集群

(分别在 hadoop01、hadoop02、hadoop03 上启动 zk)

cd /cloud/zookeeper-3.4.5/bin/

./zkServer.sh start

查看状态:

./zkServer.sh status

(一个 leader,两个 follower)

 

3.2.6 启动 journalnode(在 hadoop01 上启动所有 journalnode)

cd /cloud/hadoop-2.2.0

sbin/hadoop-daemons.sh start journalnode

(运行 jps 命令检验,多了 JournalNode 进程)

 

3.2.7 格式化 HDFS

在 hadoop01 上执行命令:

hadoop namenode -format

格式化后会在根据 core-site.xml 中的 hadoop.tmp.dir

配置生成个文件,这里我配置的是 /cloud/hadoop-2.2.0/tmp,

然后将 /cloud/hadoop-2.2.0/tmp 拷贝到 hadoop02 的

/cloud/hadoop-2.2.0/ 下。

scp -r tmp/ hadoop02:/cloud/hadoop-2.2.0/

 

3.2.8 格式化 ZK(在 hadoop01 上执行即可)

hdfs zkfc -formatZK

 

3.2.9 启动 HDFS(在 hadoop01 上执行)

sbin/start-dfs.sh

 

3.3.10 启动 YARN(在 hadoop01 上执行)

sbin/start-yarn.sh

 

到此,hadoop2.2.0 配置完毕,可以统计浏览器访问:

http://192.168.1.201:50070

NameNode ‘hadoop01:9000’ (active)

http://192.168.1.202:50070

NameNode ‘hadoop02:9000’ (standby)

 

验证 HDFS HA

首先向 hdfs 上传一个文件

hadoop fs -put /etc/profile /profile

hadoop fs -ls /

然后再 kill 掉 active 的 NameNode

kill -9 <pid of NN>

通过浏览器访问:http://192.168.1.202:50070

NameNode ‘hadoop02:9000’ (active)

这个时候 hadoop02 上的 NameNode 变成了 active

在执行命令:

hadoop fs -ls /

-rw-r–r– 3 root supergroup 1926 2014-02-06 15:36 /profile

刚才上传的文件依然存在!!!

手动启动那个挂掉的 NameNode

sbin/hadoop-daemon.sh start namenode

通过浏览器访问:http://192.168.1.201:50070

NameNode ‘hadoop01:9000’ (standby)

验证 YARN:

运行一下 hadoop 提供的 demo 中的 WordCount 程序:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce

-examples-2.2.0.jar wordcount /profile /out

OK,大功告成!!!

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

Hadoop2.0 集群搭建详解

PS:apache 提供的 hadoop-2.2.0 的安装包是在 32 位操作系统编译的,因为 hadoop 依赖一些 C ++ 的本地库,所以如果在 64 位的操作上安装 hadoop-2.2.0 就需要重新在 64 操作系统上重新编译。

1. 准备工作:(参考伪分布式搭建)

        1.1 修改 Linux 主机名

        1.2 修改 IP

        1.3 修改主机名和 IP 的映射关系

        1.4 关闭防火墙

        1.5ssh 免登陆

        1.6. 安装 JDK,配置环境变量等

2. 集群规划:

PS:在 hadoop2.0 中通常由两个 NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提供服务,而 Standby NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。

hadoop2.0 官方提供了两种 HDFS HA 的解决方案,一种是 NFS,另一种是 QJM。这里我们使用简单的 QJM。在该方案中,主备 NameNode 之间通过一组 JournalNode 同步元数据信息,一条数据只要成功写入多数 JournalNode 即认为写入成功。

通常配置奇数个 JournalNode

这里还配置了一个 zookeeper 集群,用于 ZKFC(DFSZKFailoverController)故障转移,当 Active NameNode 挂掉了,会自动切换 Standby NameNode 为 standby 状态

3. 安装步骤:

3.1. 安装配置 zooekeeper 集群

3.1.1 解压

tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/

3.1.2 修改配置

cd /cloud/zookeeper-3.4.5/conf/

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

修改:dataDir=/cloud/zookeeper-3.4.5/tmp

在最后添加:

server.1=hadoop01:2888:3888

server.2=hadoop02:2888:3888

server.3=hadoop03:2888:3888

保存退出

然后创建一个 tmp 文件夹

mkdir /cloud/zookeeper-3.4.5/tmp

再创建一个空文件

            touch /cloud/zookeeper-3.4.5/tmp/myid

          最后向该文件写入 ID

            echo 1 > /cloud/zookeeper-3.4.5/tmp/myid

      3.1.3 将配置好的 zookeeper 拷贝到其他节点 (首先分别在 hadoop02、

            hadoop03 根目录下创建一个 cloud 目录:mkdir /cloud)

              scp -r /cloud/zookeeper-3.4.5/ hadoop02:/cloud/

              scp -r /cloud/zookeeper-3.4.5/ hadoop03:/cloud/

   

      注意:修改 hadoop02、hadoop03 对应

              /cloud/zookeeper-3.4.5/tmp/myid 内容

          hadoop02:

            echo 2 > /cloud/zookeeper-3.4.5/tmp/myid

          hadoop03:

            echo 3 > /cloud/zookeeper-3.4.5/tmp/myid

 

      3.2. 安装配置 hadoop 集群

          3.2.1 解压

          tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/

      3.2.2 配置 HDFS(hadoop2.0 所有的配置文件都在

            $HADOOP_HOME/etc/hadoop 目录下)

      将 hadoop 添加到环境变量中

          vim /etc/profile

          export JAVA_HOME=/usr/java/jdk1.6.0_45

          export HADOOP_HOME=/cloud/hadoop-2.2.0

          export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

          cd /cloud/hadoop-2.2.0/etc/hadoop

      3.2.2.1 修改 hadoo-env.sh

        export JAVA_HOME=/usr/java/jdk1.6.0_45

 

  3,2.2.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>/cloud/hadoop-2.2.0/tmp</value>

          </property>

          <!– 指定 zookeeper 地址 –>

          <property>

              <name>ha.zookeeper.quorum</name>

              <value>

                hadoop01:2181,hadoop02:2181,hadoop03:2181

            </value>

          </property>

      </configuration>

 

  3,2.2.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>hadoop01:9000</value>

          </property>

          <!– nn1 的 http 通信地址 –>

          <property>

              <name>

                dfs.namenode.http-address.ns1.nn1

            </name>

            <value>hadoop01:50070</value>

          </property>

          <!– nn2 的 RPC 通信地址 –>

          <property>

              <name>

                dfs.namenode.rpc-address.ns1.nn2

            </name>

              <value>hadoop02:9000</value>

          </property>

          <!– nn2 的 http 通信地址 –>

          <property>

              <name>

                dfs.namenode.http-address.ns1.nn2

            </name>

              <value>hadoop02:50070</value>

          </property>

          <!– 指定 NameNode 的元数据在

                JournalNode 上的存放位置 –>

          <property>

              <name>

                dfs.namenode.shared.edits.dir

            </name>

              <value>

                qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1

            </value>

          </property>

          <!– 指定 JournalNode 在本地磁盘存放数据的位置 –>

          <property>

              <name>dfs.journalnode.edits.dir</name>

              <value>/cloud/hadoop-2.2.0/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</value>

          </property>

          <!– 使用隔离机制时需要 ssh 免登陆 –>

          <property>

              <name>

                dfs.ha.fencing.ssh.private-key-files

            </name>

              <value>/root/.ssh/id_rsa</value>

          </property>

      </configuration>

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计11683字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中