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

Ubuntu和CentOS中分布式配置Hadoop-2.2.0

105次阅读
没有评论

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

一、准备工作

首先在每台 Linux 电脑上面安装好 JDK6 或其以上版本,并设置好 JAVA_HOME 等,测试一下 java、javac、jps 等命令是否可以在终端使用,具体可参考《Linux 中单机配置 Hadoop》http://www.linuxidc.com/Linux/2014-01/95802.htm 中的配置过程

二、设置静态 IP

注:如果是在虚拟中建立分布式环境,这一步就可以跳过了。

(1)CentOS 静态 IP 地址设置:

  1. $sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

在里面添加下面语句:

  1. IPADDR=192.168.1.108
  2. NETMASK=255.255.255.0
  3. NETWORK=192.168.1.1

其中,IPADDR 为你想要设置的静态 IP 地址。设置完成后,输入如下命令重启网络服务。

  1. $ sudo service network restart

如果命令输入后结果一直都是 OK,则证明重启正常。输入如下命令测试一下,如果结果为你之前设置的 IP 地址。证明设置正确。

  1. $ ifconfig

(2)、Ubuntu 静态 IP 地址设置步骤如下:

  1. $ sudo vim /etc/network/interfaces

在里面添加:

  1. auto eth0
  2. iface eth0 inet static
  3. address 192.168.1.108
  4. netmask 255.255.255.0
  5. gateway 192.168.1.1

同样需要让 IP 地址生效,输入

  1. $ sudo /etc/init.d/networking restart

再输入 ifconfig 来检验 IP 设置是否生效。

 

三、设置 hostname

(1)Ubuntu 设置 hostname:

  1. $ sudo vim /etc/hostname

在里面添加自己需要取的 hostname,假设设置为 master。

 

查看设置是否生效,运行下面命令:

  1. $ hostname

如果输出 master,说明配置生效。

 

(2)CentOS 设置 hostname:

  1. $ sudo vim /etc/sysconfig/network

将里面的 HOSTNAME 修改为你想要的 hostname,假设设置为 master

 

HOSTNAME=master

查看设置是否生效,运行下面命令

  1. $ hostname

如果输出 master,说明配置生效。

 

四、设置 /etc/hosts

这一步是为了让各机器都能使用 hostname 通信,而不是用 IP 地址。我安装了三台 CentOS 虚拟机。IP 地址分别为 192.168.1.108、192.168.1.110、192.168.1.111,对应的 hostname 分别设置为 master、node、slave。在各台机器上分别运行如下命令(ubuntu 和 centos 一样):

  1. $ sudo vim /etc/hosts

在里面添加以下语句

  1. 192.168.1.108 master
  2. 192.168.1.110 node
  3. 192.168.1.111 slave

 

注,如果发现 hosts 文件中有 127.0.1.1 或者除了 127.0.0.1 之外的其他内容,将他们删除,否则之后的 hadoop 操作有可能会出现错误(比如:Hadoop Datanodes cannot find NameNode)。

 

在每个机器上使用 ping 命令看能否 ping 通其他机器。如果能 ping 通,则证明配置正确。

相关阅读

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

五、配置 SSH 无密码登录

可参考《Ubuntu 和 CentOS 配置 SSH 无密码登录》http://www.linuxidc.com/Linux/2014-01/95800.htm,做到 hostname 为 master 的机器能 ssh 无密码登录其他机器。

六、下载 Hadoop-2.2.0

  1. $ cd /home/aaron
  2. $ wget \
  3. http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
  4. $ tar -xf hadoop-2.2.0.tar.gz
  5. $ cd hadoop-2.2.0

七、配置 Hadoop 的环境变量

  1. $ sudo vim /etc/profile

在 /etc/profile 文件的末尾加上以下配置

  1. export HADOOP_DEV_HOME=/home/aaron/hadoop-2.2.0
  2. export PATH=$PATH:$HADOOP_DEV_HOME/bin
  3. export PATH=$PATH:$HADOOP_DEV_HOME/sbin
  4. export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
  5. export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
  6. export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
  7. export YARN_HOME=${HADOOP_DEV_HOME}
  8. export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop

为了让刚刚的设置生效,运行下面的命令

  1. $ sudo source /etc/profile

在终端输入 hadoop 命令查看 Hadoop 的环境变量是否生效:

  1. $ hadoop
  2. Usage: hadoop [–config confdir] COMMAND
  3. where COMMAND is one of:
  4. fs run a generic filesystem user client
  5. version print the version
  6. jar <jar> run a jar file
  7. checknative [-a|-h] check native hadoop and compression libraries
  8. availability
  9. distcp <srcurl> <desturl> copy file or directories recursively
  10. archive -archiveName NAME -p <parent path> <src>* <dest> create
  11. a hadoop archive
  12. classpath prints the class path needed to get the
  13. Hadoop jar and the required libraries
  14. daemonlog get/set the log level for each daemon
  15. or
  16. CLASSNAME run the class named CLASSNAME
  17. Most commands print help when invoked w/o parameters.

如果显示上面的信息,说明环境变量生效了,如果显示不了,重启一下电脑试。

 

八、修改 Hadoop 的配置文件

修改 Hadoop 的 hadoop-env.sh 配置文件(在 hadoop-2.2.0/etc/hadoop/ 里面),设置 jdk 所在的路径:
在里面找到 JAVA_HOME,并将它的值设置为你电脑 jdk 所在的绝对路径

  1. export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_37

依次修改 core-site.xml、yarn-site.xml、mapred-site.xml 和 hdfs-site.xml 配置文件

 

1)修改 core-site.xml

  1. <property>
  2. <name>fs.default.name</name>
  3. <value>hdfs://master:8020</value>
  4. <final>true</final>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/home/aaron/tmp/hadoop2.0</value>
  9. </property>

2)修改 yarn-site.xml

  1. <property>
  2. <name>yarn.resourcemanager.address</name>
  3. <value>master:8032</value>
  4. </property>
  5. <property>
  6. <name>yarn.resourcemanager.scheduler.address</name>
  7. <value>master:8030</value>
  8. </property>
  9. <property>
  10. <name>yarn.resourcemanager.resource-tracker.address</name>
  11. <value>master:8031</value>
  12. </property>
  13. <property>
  14. <name>yarn.resourcemanager.admin.address</name>
  15. <value>master:8033</value>
  16. </property>
  17. <property>
  18. <name>yarn.resourcemanager.webapp.address</name>
  19. <value>master:8088</value>
  20. </property>
  21. <property>
  22. <name>yarn.nodemanager.aux-services</name>
  23. <value>mapreduce_shuffle</value>
  24. </property>
  25. <property>
  26. <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  27. <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  28. </property>

注意:yarn.nodemanager.aux-services 的值是“mapreduce_shuffle”(在 hadoop-2.1-beta 中的值是“mapreduce.shuffle”)

3)修改 mapred-site.xml

  1. <property>
  2. <name>mapreduce.framework.name</name>
  3. <value>yarn</value>
  4. </property>
  5. <property>
  6. <name>mapred.system.dir</name>
  7. <value>file:/home/aaron/hadoop/mapred/system</value>
  8. <final>true</final>
  9. </property>
  10. <property>
  11. <name>mapred.local.dir</name>
  12. <value>file:/home/aaron/hadoop/mapred/local</value>
  13. <final>true</final>
  14. </property>

4)修改 hdfs-site.xml

  1. <property>
  2. <name>dfs.namenode.name.dir</name>
  3. <value>file:/home/aaron/hadoop/dfs/name</value>
  4. <final>true</final>
  5. </property>
  6. <property>
  7. <name>dfs.datanode.data.dir</name>
  8. <value>file:/home/aaron/hadoop/dfs/data</value>
  9. <final>true</final>
  10. </property>
  11. <property>
  12. <name>dfs.replication</name>
  13. <value>1</value>
  14. </property>
  15. <property>
  16. <name>dfs.permissions</name>
  17. <value>false</value>
  18. </property>

配置好 Hadoop 的相关东西之后,使用如下命令将 hadoop-2.2.0 整个文件夹分别拷贝到 node 和 slave 主机上去(注:设置都不需要改!)

  1. $ scp -r ~/hadoop-2.2.0 aaron@node:~/
  2. $ scp -r ~/hadoop-2.2.0 aaron@slave:~/

相关阅读

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

一、准备工作

首先在每台 Linux 电脑上面安装好 JDK6 或其以上版本,并设置好 JAVA_HOME 等,测试一下 java、javac、jps 等命令是否可以在终端使用,具体可参考《Linux 中单机配置 Hadoop》http://www.linuxidc.com/Linux/2014-01/95802.htm 中的配置过程

二、设置静态 IP

注:如果是在虚拟中建立分布式环境,这一步就可以跳过了。

(1)CentOS 静态 IP 地址设置:

  1. $sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

在里面添加下面语句:

  1. IPADDR=192.168.1.108
  2. NETMASK=255.255.255.0
  3. NETWORK=192.168.1.1

其中,IPADDR 为你想要设置的静态 IP 地址。设置完成后,输入如下命令重启网络服务。

  1. $ sudo service network restart

如果命令输入后结果一直都是 OK,则证明重启正常。输入如下命令测试一下,如果结果为你之前设置的 IP 地址。证明设置正确。

  1. $ ifconfig

(2)、Ubuntu 静态 IP 地址设置步骤如下:

  1. $ sudo vim /etc/network/interfaces

在里面添加:

  1. auto eth0
  2. iface eth0 inet static
  3. address 192.168.1.108
  4. netmask 255.255.255.0
  5. gateway 192.168.1.1

同样需要让 IP 地址生效,输入

  1. $ sudo /etc/init.d/networking restart

再输入 ifconfig 来检验 IP 设置是否生效。

 

三、设置 hostname

(1)Ubuntu 设置 hostname:

  1. $ sudo vim /etc/hostname

在里面添加自己需要取的 hostname,假设设置为 master。

 

查看设置是否生效,运行下面命令:

  1. $ hostname

如果输出 master,说明配置生效。

 

(2)CentOS 设置 hostname:

  1. $ sudo vim /etc/sysconfig/network

将里面的 HOSTNAME 修改为你想要的 hostname,假设设置为 master

 

HOSTNAME=master

查看设置是否生效,运行下面命令

  1. $ hostname

如果输出 master,说明配置生效。

 

四、设置 /etc/hosts

这一步是为了让各机器都能使用 hostname 通信,而不是用 IP 地址。我安装了三台 CentOS 虚拟机。IP 地址分别为 192.168.1.108、192.168.1.110、192.168.1.111,对应的 hostname 分别设置为 master、node、slave。在各台机器上分别运行如下命令(ubuntu 和 centos 一样):

  1. $ sudo vim /etc/hosts

在里面添加以下语句

  1. 192.168.1.108 master
  2. 192.168.1.110 node
  3. 192.168.1.111 slave

 

注,如果发现 hosts 文件中有 127.0.1.1 或者除了 127.0.0.1 之外的其他内容,将他们删除,否则之后的 hadoop 操作有可能会出现错误(比如:Hadoop Datanodes cannot find NameNode)。

 

在每个机器上使用 ping 命令看能否 ping 通其他机器。如果能 ping 通,则证明配置正确。

相关阅读

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

九、关掉 master、node 和 slave 的防火墙

为了防止在 Hadoop 启动时遇到 java.net.NoRouteToHostException 异常,请关掉防火墙。

(1)对于 Ubuntu 关闭防火墙

  1. $ sudo ufw disable

如果你要防火墙可以运行:

  1. $ sudo apt-get remove iptables

(2)对于 CentOS 关闭防火墙
查看 iptables 状态:

  1. $ sudo service iptables status

iptables 开机自动启动:

  1. 开启:$ sudo chkconfig iptables on
  2. 关闭:$ sudo chkconfig iptables off

iptables 关闭服务:

  1. 开启:$ sudo service iptables start
  2. 关闭:service iptables stop

十、运行 hadoop-2.2.0
首先在 master 上面格式化一下 HDFS, 如下命令

  1. $ hdfs namenode -format

在 master 中启动 namenode 和 resourcemanager

  1. $ hadoop-daemon.sh start namenode
  2. $ yarn-daemon.sh start resourcemanager

在 node 和 slave 中启动 datanode 和 nodemanager

  1. $ hadoop-daemon.sh start datanode
  2. $ yarn-daemon.sh start nodemanager

检查 Hadoop 集群是否安装好了,在 master 上面运行 jps,如果有 NameNode、ResourceManager 二个进程,说明 master 安装好了。

 

1)查看 jps

  1. $ jps
  2. 2016 NameNode
  3. 2602 ResourceManager

在 node(slave)上面运行 jps,如果有 DataNode、NodeManager 二个进程,说明 node(node1)安装好了。

  1. $ jps
  2. 7889 DataNode
  3. 7979 NodeManager

2)检查以下两个页面是否能打开

 

http://master:50070/dfshealth.jsp
http://master:8088/cluster/nodes

3)运行以下 hdfs 命令

  1. hadoop fs -mkdir /input
  2. hadoop fs -put NOTICE.txt /test/input/
  3. hadoop fs -put README.txt /test/input/
  4. hadoop fs -ls /input
  5. hadoop fs -cat /input/NOTICE.txt

4)运行 mapreduce job

  1. hadoop jar hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar \
  2. grep /input /output ‘code’

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

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