分布式安装Hadoop2.7(适用于2.x版本)

原文出自: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、 解压文件
将第一部分中下载的
  1. tar zxvf hadoop-2.2.0_x64.tar.gz
复制代码
  1. mv hadoop-2.2.0  hadoop
复制代码

解压到/usr路径下
并且重命名,效果如下

 

2、 hadoop配置过程

配置之前,需要在master本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/tmp
这里文件权限:创建完毕,你会看到红线部分,注意所属用户及用户组。如果不再新建的用户组下面,可以使用下面命令来修改: 让你真正了解chmod和chown命令的用法
分布式安装Hadoop2.7(适用于2.x版本)_第1张图片 
这里要涉及到的配置文件有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文件获得。下面举例:
分布式安装Hadoop2.7(适用于2.x版本)_第2张图片 


配置文件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节点)

写入以下内容:
分布式安装Hadoop2.7(适用于2.x版本)_第3张图片 

配置文件4:core-site.xml
  1. <configuration>
  2.        <property>
  3.                 <name>fs.defaultFS</name>
  4.                 <value>hdfs://master:8020</value>
  5.        </property>
  6.        <property>
  7.                 <name>io.file.buffer.size</name>
  8.                 <value>131072</value>
  9.         </property>
  10.        <property>
  11.                <name>hadoop.tmp.dir</name>
  12.                <value>file:/home/aboutyun/tmp</value>
  13.                <description>Abase for other temporary   directories.</description>
  14.        </property>
  15.         <property>
  16.                <name>hadoop.proxyuser.aboutyun.hosts</name>
  17.                <value>*</value>
  18.        </property>
  19.        <property>
  20.                <name>hadoop.proxyuser.aboutyun.groups</name>
  21.                <value>*</value>
  22.        </property>
  23. </configuration>
复制代码


配置文件5:hdfs-site.xml
  1. <configuration>
  2.        <property>
  3.                <name>dfs.namenode.secondary.http-address</name>
  4.                <value>master:9001</value>
  5.        </property>
  6.      <property>
  7.              <name>dfs.namenode.name.dir</name>
  8.              <value>file:/home/aboutyun/dfs/name</value>
  9.        </property>
  10.       <property>
  11.               <name>dfs.datanode.data.dir</name>
  12.               <value>file:/home/aboutyun/dfs/data</value>
  13.        </property>
  14.        <property>
  15.                <name>dfs.replication</name>
  16.                <value>3</value>
  17.         </property>
  18.         <property>
  19.                  <name>dfs.webhdfs.enabled</name>
  20.                   <value>true</value>
  21.          </property>
  22. </configuration>
复制代码


配置文件6:mapred-site.xml
  1. <configuration>
  2.           <property> 
  3.                 <name>mapreduce.framework.name</name>
  4.                 <value>yarn</value>
  5.            </property>
  6.           <property>
  7.                   <name>mapreduce.jobhistory.address</name>
  8.                   <value>master:10020</value>
  9.           </property>
  10.           <property>
  11.                 <name>mapreduce.jobhistory.webapp.address</name>
  12.                 <value>master:19888</value>
  13.        </property>
  14. </configuration>
复制代码



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



3、复制到其他节点
上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:
  1. 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.配置环境变量
第一步:
  1. vi /etc/environment
复制代码
第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变。

 

4、启动验证

4.1 启动hadoop
格式化namenode:
  1. hdfs namenode –format
复制代码
或则使用下面命令:
  1. hadoop namenode -format
复制代码

启动hdfs:
  1. start-dfs.sh
复制代码

此时在master上面运行的进程有:
namenode
secondarynamenode

slave节点上面运行的进程有:datanode

启动yarn:
  1. start-yarn.sh
复制代码
我们看到如下效果:
master有如下进程:
分布式安装Hadoop2.7(适用于2.x版本)_第4张图片 

slave1有如下进程
 
此时hadoop集群已全部配置完成!!!
【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
然后我们输入:(这里有的同学没有配置hosts,所以输出master访问不到,如果访问不到输入ip地址即可)
  1. http://master:8088/
复制代码

如何修改hosts:
win7 进入下面路径:
  1. C:\Windows\System32\drivers\etc
复制代码
找打hosts
分布式安装Hadoop2.7(适用于2.x版本)_第5张图片 
然后打开,进行如下配置即可看到
分布式安装Hadoop2.7(适用于2.x版本)_第6张图片 


看到下图:
分布式安装Hadoop2.7(适用于2.x版本)_第7张图片 

你可能感兴趣的:(hadoop,分布式,2.x,HADOOP集群,2.7)