Hadoop全分布式安装

来源:互联网 发布:读写分离 mysql 性能 编辑:程序博客网 时间:2024/06/16 05:55
分布式安装Hadoop


【准备工作】
1、下载Hadoop的binary包hadoop-2.6.4.tar.gz
http://hadoop.apache.org/releases.html


2、编辑主机名解析/etc/hosts 或者主机数多的话可以配置一台DNS服务器处理。
172.16.0.100    master
172.16.0.101    slave101
172.16.0.102    slave102
注意:不要把master解析成127.0.0.1


3、安装JDK
# cd /usr/local/
# ls | grep jdk-7u80-linux-x64.tar.gz
# tar -zxvf jdk-7u80-linux-x64.tar.gz 
# vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
# java -version


4、创建hadoop操作系统用户
# groupadd -g 1000 hadoop
# useradd -u 1000 -g 1000 hadoop
# passwd hadoop


5、配置hadoop用户节点间等效性
master节点执行:
$ ssh-keygen -t rsa -P ''    --以rsa算法,生成公钥、私钥对,-P ''表示空密码。
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
slave节点执行:
$ ssh-keygen -t rsa -P ''
[hadoop@slave101 ~]$ scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_101.pub
[hadoop@slave102 ~]$ scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_102.pub
[hadoop@master ~]$ cat id_rsa_101.pub >> .ssh/authorized_keys
[hadoop@master ~]$ cat id_rsa_102.pub >> .ssh/authorized_keys
[hadoop@master ~]$ scp .ssh/authorized_keys hadoop@slave101:/home/hadoop/.ssh/authorized_keys
[hadoop@master ~]$ scp .ssh/authorized_keys hadoop@slave102:/home/hadoop/.ssh/authorized_keys


以上准备工作完成后,正式开始安装hadoop




【安装Hadoop】
先在master节点执行以下操作
1、上传并解压Hadoop安装包
$ cd
$ tar -zxvf hadoop-2.6.4.tar.gz 


2、修改hadoop用户环境变量指向Hadoop目录
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4
export JAVA_HOME=/usr/local/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.4.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.4.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
export HBASE_HOME=/home/hadoop/hadoop-2.6.4
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


3、修改$HADOOP_HOME/etc/hadoop/下的hadoop配置文件
一共有7个文件要修改:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
$HADOOP_HOME/etc/hadoop/yarn-env.sh
$HADOOP_HOME/etc/hadoop/core-site.xml
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
$HADOOP_HOME/etc/hadoop/mapred-site.xml
$HADOOP_HOME/etc/hadoop/yarn-site.xml
$HADOOP_HOME/etc/hadoop/slaves


3.1 修改hadoop-env.sh和yarn-env.sh 
这二个文件主要是修改JAVA_HOME后的目录,改成实际本机jdk所在目录位置
找到下面这行的位置,改成(jdk目录位置,大家根据实际情况修改)
export JAVA_HOME=/usr/local/jdk1.7.0_80
另外 hadoop-env.sh中 , 建议加上这句: export HADOOP_PREFIX=/home/hadoop/hadoop-2.6.4


3.2 修改core-site.xml
参考下面的内容修改
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmp</value>
  </property>
</configuration>
注:/home/hadoop/tmp 目录如不存在,则先mkdir手动创建


core-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/core-default.xml


3.3 修改hdfs-site.xml
<configuration>
  <property>
    <name>dfs.datanode.ipc.address</name>
    <value>0.0.0.0:50020</value>
  </property>
  <property>
    <name>dfs.datanode.http.address</name>
    <value>0.0.0.0:50075</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>
注:dfs.replication表示数据副本数,一般不大于datanode的节点数。
hdfs-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml


3.4 修改mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>


3.5 修改yarn-site.xml
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>


yarn-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml


最后一个文件slaves暂时不管(可以先用mv slaves slaves.bak 将它改名),上述配置弄好后,就可以在master上启用 NameNode测试了


4、测试Hadoop安装结果
运行以下命令格式化dfs:
$HADOOP_HOME/bin/hdfs namenode  -format
看到如下字样表示格式化OK
16/03/29 02:02:05 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.


运行以下命令启动dfs:
$HADOOP_HOME/sbin/start-dfs.sh 
启动成功后,输入jps查看进程,需要能看到NameNode及SecondaryNameNode
[hadoop@master hadoop]$ jps
7069 SecondaryNameNode
6893 NameNode
7190 Jps


运行以下命令启动yarn
$HADOOP_HOME/sbin/start-yarn.sh
启动成功后,再次用jps查看进程,可以看到多了一个ResourceManager
[hadoop@master hadoop]$ jps
7069 SecondaryNameNode
7486 Jps
6893 NameNode
7236 ResourceManager


修改slaves文件(刚才备份成slaves.bak了),添加slaves节点
slave101
slave102
保存退出,最后运行以下命令停掉刚才启动的服务
$HADOOP_HOME/sbin/stop-dfs.sh 
$HADOOP_HOME/sbin/stop-yarn.sh


5、将master的hadoop安装目录复制到slaves节点上
$ scp -r hadoop-2.6.4 hadoop@slave101:/home/hadoop/
$ scp -r hadoop-2.6.4 hadoop@slave102:/home/hadoop/


6、启动并验证服务
在master上启动服务:
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh


或者直接用$HADOOP_HOME/sbin/start-all.sh 启动 


master节点上有几下3个进程:NameNode、SecondaryNameNode、ResourceManager
slave101、slave102这俩datanode上要有几下2个进程:DataNode、NodeManager


同时可浏览master地址及对应端口查看状态:
http://master:50070/
http://master:8088/


另外也可以通过 bin/hdfs dfsadmin -report 查看hdfs的状态报告


至此,安装结束。


【注意事项】
a) master(即:namenode节点)若要重新格式化,请先清空各datanode上的data目录(最好连tmp目录也一起清空),否则格式化完成后,启动dfs时,datanode会启动失败
b) 如果觉得master机器上只运行namenode比较浪费,想把master也当成一个datanode,直接在slaves文件里,添加一行master即可
c) 为了方便操作,可修改/etc/profile,把hadoop所需的lib目录,先加到CLASSPATH环境变量中,同时把hadoop/bin,hadoop/sbin目录也加入到PATH变量中
d)可能会看到WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable错误,hadoop2.6需要下载hadoop-native-64-2.4.0.tar,并覆盖到$HADOOP_HOME/lib/native目录即可(tar -x hadoop-native-64-2.4.0.tar -C  hadoop/lib/native/)

0 0
原创粉丝点击