共计 8566 个字符,预计需要花费 22 分钟才能阅读完成。
本文的前提是假设你已经成功安装一台服务器的 Hadoop 伪分布式,因此有些细节没有具体给出解释(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html)。
参考文章:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
首先截图看下完成后能通过 web 访问的 hadoop 框架的样子
一、节点的分布
可以看到这个集群有 5 台服务器,我本人是在 VMware 虚拟机中装的 2 台 Ubuntu14.04 和 3 台 CentOS7,由这五台虚拟服务器来进行完全的分布式的集群 hadoop 搭建。(当然,可以根据自己的需求或者是意愿来选着 linux 系统和服务器台数,推荐这样建立集群:在一台虚拟服务器上把 zookeeper 和 hadoop 以及 JDK 等的环境配置好后,通过 VMware 虚拟机的克隆功能来复制剩下的若干台,这样会节省重复的时间,最后是修改各自的 ip 和 hostname。)
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
CentOS 6.3 下 Hadoop 伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
Hadoop 2.6.0 HA 高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
二、JDK 和 Hadoop 的下载安装
linux 系统的 java jdk 和 hadoop 的解压和安装,可以百度,或者谷歌,本文省略,不过有一点需要提下,注意 linux 和 hadoop 的版本的匹配,hadoop 的官网的 2.5 版本和之前的都是 32 位的,之后的是 64 位的(查看 hadoop 版本:进入 hadoop-2.x.x/lib/native 中输入如下命令:file libhadoop.so.1.0.0 即可查看是 32 位的还是 64 位的,如果版本和系统不匹配,则需要下载源码进行编译,不过话说回来,随着内存的扩大,现在一般系统都选择 64 位的。)
三、hadoop 的 HA 的搭建
1、zookeeper 的下载
在 zookeeper 的官网下在 3.4.6 的最新稳定版本。
2、linux 前期准备
在搭建之前,介绍下 linux 的下的 ssh 免密码登录,和防火墙的关闭,
Ubuntu 的防火墙:ufw disable
centOS 的防火墙:centOS7 是 systemctl stop firewalld.service(之前的是 iptables,笔者刚搭建的时候没注意到,后面 MapReduce 各种连接错误,都快崩溃了,希望少走弯路,保持学习的热情。)
ssh 的免密码登录:在 node1 上:
①没有 ssh 安装 ssh,可以如下命令,如果 linux 提示错误,按照提示的错误,更新下出错的那个版本在安装 sshserver 即可。
$ sudo apt-get install ssh
$ sudo apt-get install rsync
②生成公钥和私钥
$ ssh-keygen -t dsa -P”-f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
之后可以在 node1 用 ssh localhost 登录,发现不用输入密码了。
(补充一点,在每台 linux 上把每台主机的主机名依次修改位 node1 到 node5,/etc/hostname 中)
③ 把 node1 的公钥拷贝到 node2~node5 中,实现 node1 到其他服务器的 ssh 无密码登录。
scp -r ~/.ssh/authorized_keys root@node2:~/.ssh/
把 node2 依次改为 node3 到 node5,即可。
在 node1 中登录 node2:ssh node2,发现不需要密码就登录了(第一次登录提示 yes or no?输入 yes 即可),主机名为 node2 了,输入 exit 即可退出回到 node1 的界面,再登录 node3 到 node5 即可。
3、zookeeper 集群搭建(可以参考 zookeeper 的官网)
把 zookeeper 中 conf 目录下的
zoo_sample.cfg 复制一封改为:zoo.cfg,文件中添加如下内容:
dataDir=/opt/zookeeper
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
最后在 node1 的服务器的 /opt/zookeeper 目录下建立 myid 文件,内容为 1;同理 node2 为 2;node3 为 3。
在 node1 上进入到 zookeeper 的 bin 目录下,输入./zkServer.sh start
同理 node2;
同理 node3;
再在 node1 到 node3 的 bin 目录下,输入./zkServer.sh status
看到如下内容表示你已成功:
JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
如上 zookeeper 集群已经搭建完成。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138476p2.htm
四、Hadoop 的集群的搭建
1、xml 文件的配置
首先把每台机服务器的 /etc/hosts 文件配好,如本人的:
192.168.8.3 node1
192.168.8.13 node2
192.168.8.50 node3
192.168.8.51 node4
192.168.8.6 node5
注意 5 台机器保持是一样,可以通过 scp 拷贝。
在 node1 上的 hadoop 的解压目录下,进入 etc/hadoop
在 hadoop-env.sh、yarn-env.sh 中,把 JAVA_HOME 改为你在 linux 中安装的 jdk 目录。
修改hdfs-site.xml:
<configuration>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node3:8485;node4:8485;node5:8485/mycluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</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>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/journal/node/local/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
修改core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data/hadoop/temp</value>
<description>Abase for other temporarydirectories.</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
</configuration>
修改yarn-site.xml:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
修改mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>Execution framework set to Hadoop YARN.</description>
</property>
</configuration>
在还是 hadoop 的 etc/hadoop 配置文件中:
修改 slaves 文件:增加三个 datanode
node3
node4
node5
最后,node1 上改动的文件通过 scp 拷贝到其他的四台机器的相同位置上替换原来的这些文件即可。
总结:2.x 的必需的守护进程有 5 个,所以可以看到我们需要配置的文件也有 5 个,少任何一个都是不行的。
五、hadoop 的启动运行
这个,我不行敲字,我就截个图,把我的运行步骤贴上来,
最后启动 yarn:start-yarn.sh
(友情提示:不要多次 namenode -format,这样会报错,解决办法,就是到你在 xml 文件中配置的路径下,找到 datanode 对应的文件夹,删除之后,再 namenode format 就可以了。)
查看,我们通过 jps 查看,如开头的表格所示,我们这 十七个节点 是否全部启动:
node1:
node2:
node3:
node4:
node5:
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138476.htm
本文的前提是假设你已经成功安装一台服务器的 Hadoop 伪分布式,因此有些细节没有具体给出解释(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html)。
参考文章:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
首先截图看下完成后能通过 web 访问的 hadoop 框架的样子
一、节点的分布
可以看到这个集群有 5 台服务器,我本人是在 VMware 虚拟机中装的 2 台 Ubuntu14.04 和 3 台 CentOS7,由这五台虚拟服务器来进行完全的分布式的集群 hadoop 搭建。(当然,可以根据自己的需求或者是意愿来选着 linux 系统和服务器台数,推荐这样建立集群:在一台虚拟服务器上把 zookeeper 和 hadoop 以及 JDK 等的环境配置好后,通过 VMware 虚拟机的克隆功能来复制剩下的若干台,这样会节省重复的时间,最后是修改各自的 ip 和 hostname。)
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
CentOS 6.3 下 Hadoop 伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
Hadoop 2.6.0 HA 高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
二、JDK 和 Hadoop 的下载安装
linux 系统的 java jdk 和 hadoop 的解压和安装,可以百度,或者谷歌,本文省略,不过有一点需要提下,注意 linux 和 hadoop 的版本的匹配,hadoop 的官网的 2.5 版本和之前的都是 32 位的,之后的是 64 位的(查看 hadoop 版本:进入 hadoop-2.x.x/lib/native 中输入如下命令:file libhadoop.so.1.0.0 即可查看是 32 位的还是 64 位的,如果版本和系统不匹配,则需要下载源码进行编译,不过话说回来,随着内存的扩大,现在一般系统都选择 64 位的。)
三、hadoop 的 HA 的搭建
1、zookeeper 的下载
在 zookeeper 的官网下在 3.4.6 的最新稳定版本。
2、linux 前期准备
在搭建之前,介绍下 linux 的下的 ssh 免密码登录,和防火墙的关闭,
Ubuntu 的防火墙:ufw disable
centOS 的防火墙:centOS7 是 systemctl stop firewalld.service(之前的是 iptables,笔者刚搭建的时候没注意到,后面 MapReduce 各种连接错误,都快崩溃了,希望少走弯路,保持学习的热情。)
ssh 的免密码登录:在 node1 上:
①没有 ssh 安装 ssh,可以如下命令,如果 linux 提示错误,按照提示的错误,更新下出错的那个版本在安装 sshserver 即可。
$ sudo apt-get install ssh
$ sudo apt-get install rsync
②生成公钥和私钥
$ ssh-keygen -t dsa -P”-f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
之后可以在 node1 用 ssh localhost 登录,发现不用输入密码了。
(补充一点,在每台 linux 上把每台主机的主机名依次修改位 node1 到 node5,/etc/hostname 中)
③ 把 node1 的公钥拷贝到 node2~node5 中,实现 node1 到其他服务器的 ssh 无密码登录。
scp -r ~/.ssh/authorized_keys root@node2:~/.ssh/
把 node2 依次改为 node3 到 node5,即可。
在 node1 中登录 node2:ssh node2,发现不需要密码就登录了(第一次登录提示 yes or no?输入 yes 即可),主机名为 node2 了,输入 exit 即可退出回到 node1 的界面,再登录 node3 到 node5 即可。
3、zookeeper 集群搭建(可以参考 zookeeper 的官网)
把 zookeeper 中 conf 目录下的
zoo_sample.cfg 复制一封改为:zoo.cfg,文件中添加如下内容:
dataDir=/opt/zookeeper
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
最后在 node1 的服务器的 /opt/zookeeper 目录下建立 myid 文件,内容为 1;同理 node2 为 2;node3 为 3。
在 node1 上进入到 zookeeper 的 bin 目录下,输入./zkServer.sh start
同理 node2;
同理 node3;
再在 node1 到 node3 的 bin 目录下,输入./zkServer.sh status
看到如下内容表示你已成功:
JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
如上 zookeeper 集群已经搭建完成。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138476p2.htm