原文出自:http://www.aboutyun.com/thread-7684-1-1.html 写的非常完整,特此转载,另外补充一些锦上添花的东西如pssh。
准备工作:
1)配置ssh无密码访问
hadoop和pssh都需要。
在Master上生成一个密钥对,包括一个公钥(如.ssh/id_rsa.pub)和一个私钥,而后将公钥复制到所有的Salve上(追加到.ssh/authorized_keys文件中)。保证所有节点之间两两互通,相当于先把所有节点的pub密钥都拷贝到同一个节点的authorized_keys文件中,然后把这个文件再复制到其他节点,这样每个节点都有了所有节点的pub密钥。
2)节点较多时,最好安装pssh,方便同时操作多个节点执行相同的命令,依赖主节点到从节点的无密码ssh访问。pssh使用参考http://www.linuxidc.com/Linux/2013-08/88547.htm。
下载安装
# git clone http://code.google.com/p/parallel-ssh/
# python setup.py
创建节点列表文件如hosts.txt,每一行是IP或者host名。
主要的两个命令
# pssh -h hosts.txt -P "要执行的命令"
# pscp -h hosts.txt -r source_path要复制的目录 dest_path目的地址
3)创建hadoop用户(原文章中是aboutyun用户)
# pssh -h hosts.txt -P "useradd hadoop"
# pssh -h hosts.txt -P "usermod -a -G hadoop hadoop"
4)安装jdk1.7
# pscp -h hosts.txt jdk-7u15-linux-x64.rpm ~/
# pssh -h hosts.txt -P "rpm -ivh jdk-7u15-linux-x64.rpm "
后续还要修改/etc/profile,添加JAVA和HADOOP的环境变量,参考如下,设置好master后用pscp复制到其他节点即可:
export JAVA_HOME=/usr/java/jdk1.7.0_15
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/root/hadoop-2.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$HADOOP_HOME/lib/native/
export HADOOP_PREFIX=/root/hadoop-2.7.0
关于JAVA_LIBRARY还有点问题,因为hadoop启动时总是报没有hadoop library的警告。
在分布式环境下安装配置Hadoop 2.x:
直接参考http://www.aboutyun.com/thread-7684-1-1.html ,没什么大问题。
hadoop集群中每个机器上面的配置基本相同,所以我们先在master上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。
【注意】:master和slaves安装的hadoop路径要完全一样,用户和组也要完全一致
1、 解压文件
将第一部分中下载的
- tar zxvf hadoop-2.2.0_x64.tar.gz
复制代码
解压到/usr路径下
并且重命名,效果如下
2、 hadoop配置过程
配置之前,需要在master本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/tmp
这里文件权限:创建完毕,你会看到红线部分,注意所属用户及用户组。如果不再新建的用户组下面,可以使用下面命令来修改: 让你真正了解chmod和chown命令的用法
这里要涉及到的配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上文件默认不存在的,可以复制相应的template文件获得。下面举例:
配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/jdk1.7)
配置文件2:yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/jdk1.7)
配置文件3:slaves (这个文件里面保存所有slave节点)
写入以下内容:
配置文件4:core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master:8020</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/home/aboutyun/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- <property>
- <name>hadoop.proxyuser.aboutyun.hosts</name>
- <value>*</value>
- </property>
- <property>
- <name>hadoop.proxyuser.aboutyun.groups</name>
- <value>*</value>
- </property>
- </configuration>
-
复制代码
配置文件5:hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>master:9001</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/home/aboutyun/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/home/aboutyun/dfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- </configuration>
-
复制代码
配置文件6:mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>master:10020</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>master:19888</value>
- </property>
- </configuration>
-
复制代码
配置文件7:yarn-site.xml
- <configuration>
- <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>
- <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>
- </configuration>
-
复制代码
3、复制到其他节点
上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:
- sudo scp -r /usr/hadoop aboutyun@slave1:~/
复制代码
这里记得先复制到
home/aboutyun下面,然后在转移到
/usr下面。
后面我们会经常遇到问题,经常修改配置文件,所以修改完一个配置文件后,其他节点都需要修改,这里附上脚本操作方便:
一、节点之间传递数据:
第一步:vi scp.sh
第二步:把下面内容放到里面(记得修改下面红字部分,改成自己的)
#!/bin/bash
#slave1
scp /usr/hadoop/etc/hadoop/core-site.xml
aboutyun@slave1:~/
scp /usr/hadoop/etc/hadoop/hdfs-site.xml
aboutyun@slave1:~/
#slave2
scp /usr/hadoop/etc/hadoop/core-site.xml
aboutyun@slave2:~/
scp /usr/hadoop/etc/hadoop/hdfs-site.xml
aboutyun@slave2:~/
第三步:保存scp.sh
第四步:bash scp.sh执行
二、移动文件夹:
可以自己写了。
4.配置环境变量
第一步:
第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变。
4、启动验证
4.1 启动hadoop
格式化namenode:
启动hdfs:
此时在master上面运行的进程有:
namenode
secondarynamenode
slave节点上面运行的进程有:datanode
启动yarn:
master有如下进程:
slave1有如下进程
此时hadoop集群已全部配置完成!!!
【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
然后我们输入:(这里有的同学没有配置hosts,所以输出master访问不到,如果访问不到输入ip地址即可)
如何修改hosts:
win7 进入下面路径:
- C:\Windows\System32\drivers\etc
复制代码
找打hosts
然后打开,进行如下配置即可看到
看到下图: