1、做好下文中的所有配置:Hadoop1.2.1分布式安装-1-准备篇。
2、Hadoop2.x的发行版中有个小问题:libhadoop.so.1.0.0在64位OS中存在问题,因为它是32位的,在64位OS中hadoop启动时会报一个WARN的日志。这个包的作用是调用native的api,可以提高hadoop的性能,如果这个包失效,那就是使用jvm做压缩等工作,效率就会很低。处理方法就是重新编译Hadoop,见xxx(link article)。
3、在打算做namenode的机器上,wget或其他方式下载hadoop的压缩包,并解压到本地指定目录。下载解压命令参考Linux常用命令。
4、各种配置文件和hadoop1会有所不同,共有七个文件,以下分别描述。
/hadoop-2.4.1/etc/hadoop/hadoop-env.sh
# The java implementation to use. export JAVA_HOME=${JAVA_HOME}
/hadoop-2.4.1/etc/hadoop/yarn-env.sh
# some Java parameters # export JAVA_HOME=/home/y/libexec/jdk1.6.0/ if [ "$JAVA_HOME" != "" ]; then #echo "run java in $JAVA_HOME" JAVA_HOME=$JAVA_HOME fi if [ "$JAVA_HOME" = "" ]; then echo "Error: JAVA_HOME is not set." exit 1 fi JAVA=$JAVA_HOME/bin/java JAVA_HEAP_MAX=-Xmx512m #默认的heap_max是1000m,我的虚拟机没这么大内存,所以改小了
/hadoop-2.4.1/etc/hadoop/slaves
#写入你slave的节点。如果是多个就每行一个,写入host名 bd24 bd25
/hadoop-2.4.1/etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://bd23:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> <property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/wukong/a_usr/hadoop-2.4.1/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>hadoop.proxyuser.hduser.hosts</name> </value>*</value> </property> <property> <name>hadoop.proxyuser.hduser.groups</name. <value>*</value> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>bd23:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/wukong/a_usr/hadoop-2.4.1/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/wukong/a_usr/hadoop-2.4.1/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>bd23:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>bd23.19888</value> </property> </configuration>
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>bd23:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>bd23:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>bd23:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>bd23:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>bd23:8088</value> </property> </configuration>
3、将hadoop目录拷贝到所有主机。远程拷贝的方法见Linux常用命令
4、格式化
[wukong@bd23 hadoop-2.4.1]$ ./bin/hdfs namenode -format
看到如下输出就证明成功了
14/07/31 13:58:30 INFO common.Storage: Storage directory /home/wukong/a_usr/hadoop-2.4.1/name has been successfully formatted.
5、启动dfs
[wukong@bd23 hadoop-2.4.1]$ ./sbin/start-dfs.sh
看到如下输出就证明成功了
Starting namenodes on [bd23] bd23: starting namenode, logging to /home/wukong/a_usr/hadoop-2.4.1/logs/hadoop-wukong-namenode-bd23.out bd24: starting datanode, logging to /home/wukong/a_usr/hadoop-2.4.1/logs/hadoop-wukong-datanode-bd24.out bd25: starting datanode, logging to /home/wukong/a_usr/hadoop-2.4.1/logs/hadoop-wukong-datanode-bd25.out Starting secondary namenodes [bd23] bd23: starting secondarynamenode, logging to /home/wukong/a_usr/hadoop-2.4.1/logs/hadoop-wukong-secondarynamenode-bd23.out
6、使用jps查看机器启动的进程情况。正常情况下master上应该有namenode和sencondarynamenode。slave上有datanode。
7、启动yarn。使用脚本
[wukong@bd23 hadoop-2.4.1]$ ./sbin/start-yarn.sh
8、使用jps查看进程情况。master上应该有namenode, sencondarynamenode, ResourceManager,slave上应该有datanode, nodeManager。
补充说明:
1、hadoop2中使用start-all.sh的时候,会提示脚本已过期,请使用start-dfs.sh。但是还是会启动起来hdfs和yarn。
2、一张值得注意的图