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

来源:互联网 发布:梦想小镇mac同步手机 编辑:程序博客网 时间:2024/06/17 09:47

一、准备工作

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

二、设置静态IP

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

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

$sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
在里面添加下面语句:
IPADDR=192.168.1.108NETMASK=255.255.255.0NETWORK=192.168.1.1
其中,IPADDR为你想要设置的静态IP地址。设置完成后,输入如下命令重启网络服务。
$ sudo service network restart 
如果命令输入后结果一直都是OK,则证明重启正常。输入如下命令测试一下,如果结果为你之前设置的IP地址。证明设置正确。

$ ifconfig
(2)、Ubuntu静态IP地址设置步骤如下:
$ sudo vim /etc/network/interfaces
在里面添加:
auto eth0iface eth0 inet staticaddress 192.168.1.108netmask 255.255.255.0gateway 192.168.1.1
同样需要让IP地址生效,输入
$ sudo /etc/init.d/networking restart
再输入ifconfig来检验IP设置是否生效。

三、设置hostname

(1)Ubuntu设置hostname:

$ sudo vim /etc/hostname
在里面添加自己需要取的hostname,假设设置为master。

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

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

(2)CentOS设置hostname:

$ sudo vim /etc/sysconfig/network
将里面的HOSTNAME修改为你想要的hostname,假设设置为master

HOSTNAME=master

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

$ 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一样):

$ sudo vim /etc/hosts
在里面添加以下语句

192.168.1.108 master192.168.1.110 node192.168.1.111 slave

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

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

五、配置SSH无密码登录

可参考《Ubuntu和CentOS配置SSH无密码登录》,做到hostname为master的机器能ssh无密码登录其他机器。

六、下载Hadoop-2.2.0

$ cd /home/aaron$ wget \http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz$ tar -xf hadoop-2.2.0.tar.gz$ cd hadoop-2.2.0
七、配置Hadoop的环境变量
$ sudo vim /etc/profile
在/etc/profile文件的末尾加上以下配置
export HADOOP_DEV_HOME=/home/aaron/hadoop-2.2.0export PATH=$PATH:$HADOOP_DEV_HOME/binexport PATH=$PATH:$HADOOP_DEV_HOME/sbinexport HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}export YARN_HOME=${HADOOP_DEV_HOME}export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
为了让刚刚的设置生效,运行下面的命令
$ sudo source /etc/profile
在终端输入hadoop命令查看Hadoop的环境变量是否生效:
$ hadoopUsage: hadoop [--config confdir] COMMAND       where COMMAND is one of:  fs                   run a generic filesystem user client  version              print the version  jar <jar>            run a jar file  checknative [-a|-h]  check native hadoop and compression libraries                                                 availability  distcp <srcurl> <desturl> copy file or directories recursively  archive -archiveName NAME -p <parent path> <src>* <dest> create                                              a hadoop archive  classpath            prints the class path needed to get the                       Hadoop jar and the required libraries  daemonlog            get/set the log level for each daemon or  CLASSNAME            run the class named CLASSNAME Most commands print help when invoked w/o parameters.
如果显示上面的信息,说明环境变量生效了,如果显示不了,重启一下电脑试。

八、修改Hadoop的配置文件

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

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

<property>  <name>fs.default.name</name>  <value>hdfs://master:8020</value>  <final>true</final></property><property>  <name>hadoop.tmp.dir</name>  <value>/home/aaron/tmp/hadoop2.0</value></property>
  
2)修改yarn-site.xml
<property>  <name>yarn.resourcemanager.address</name>  <value>master:8032</value></property> <property>  <name>yarn.resourcemanager.scheduler.address</name>  <value>master:8030</value></property> <property>  <name>yarn.resourcemanager.resource-tracker.address</name>  <value>master:8031</value></property> <property>  <name>yarn.resourcemanager.admin.address</name>  <value>master:8033</value></property> <property>  <name>yarn.resourcemanager.webapp.address</name>  <value>master:8088</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> 

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

3)修改mapred-site.xml

<property>     <name>mapreduce.framework.name</name>     <value>yarn</value> </property>   <property>     <name>mapred.system.dir</name>     <value>file:/home/aaron/hadoop/mapred/system</value>     <final>true</final> </property>   <property>     <name>mapred.local.dir</name>     <value>file:/home/aaron/hadoop/mapred/local</value>     <final>true</final> </property> 

 4)修改hdfs-site.xml  
<property>    <name>dfs.namenode.name.dir</name>    <value>file:/home/aaron/hadoop/dfs/name</value>    <final>true</final></property>  <property>    <name>dfs.datanode.data.dir</name>    <value>file:/home/aaron/hadoop/dfs/data</value>    <final>true</final></property><property>    <name>dfs.replication</name>    <value>1</value></property>  <property>    <name>dfs.permissions</name>    <value>false</value></property>
配置好Hadoop的相关东西之后,使用如下命令将hadoop-2.2.0整个文件夹分别拷贝到node和slave主机上去(注:设置都不需要改!)
<span style="font-family: Arial, Helvetica, sans-serif;">$ scp -r ~/hadoop-2.2.0 aaron@node:~/$ scp -r ~/hadoop-2.2.0 aaron@slave:~/</span>

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

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

(1)对于ubuntu关闭防火墙

$ sudo ufw disable
如果你要防火墙可以运行:
$ sudo apt-get remove iptables
(2)对于centos关闭防火墙
查看iptables状态:
$ sudo service iptables status
iptables开机自动启动: 
开启:$ sudo chkconfig iptables on关闭: $ sudo chkconfig iptables off

iptables关闭服务:

开启: $ sudo service iptables start关闭: service iptables stop

十、运行hadoop-2.2.0
首先在master上面格式化一下HDFS,如下命令
$  hdfs namenode -format
在master中启动 namenode 和 resourcemanager
$ hadoop-daemon.sh start namenode$ yarn-daemon.sh start resourcemanager
在node和slave中启动datanode 和 nodemanager
$ hadoop-daemon.sh start datanode$ yarn-daemon.sh start nodemanager
检查Hadoop集群是否安装好了,在master上面运行jps,如果有NameNode、ResourceManager二个进程,说明master安装好了。

1)查看jps

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

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

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

3) 运行以下hdfs命令

hadoop fs -mkdir /inputhadoop fs -put NOTICE.txt /test/input/hadoop fs -put README.txt /test/input/hadoop fs -ls /inputhadoop fs -cat /input/NOTICE.txt
4)运行mapreduce job
hadoop jar hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar \grep  /input /output 'code'

转载请注明出处:http://blog.csdn.net/iAm333

原创粉丝点击