在个人虚拟机上搭建hadoop的运行环境的笔记。
背景信息:部署版本采用了hadoop 2.6.3;操作系统为centos ,内核2.6.32-504.3.3.el6.x86_64;系统已经正确安装了jdk,本次选定版本为jdk7u79.
一、解压部署
1. 下载hadoop 2.6.3 安装包 hadoop-2.6.3.tar.gz,下载页面:http://hadoop.apache.org/releases.html
解压到目录:/home/hanzhiwei/app/hadoop下
2. 设定HADOOP_HOME环境变量
在~/.bash_profile文件中添加hadoop的环境变量
export JAVA_HOME=/home/hanzhiwei/app/java/jdk1.7.0_79 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin:$HADOOP_HOME/bin export HADOOP_HOME=/home/han/app/hadoop/hadoop-2.6.3 export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
为了让设置及时生效,执行source ~/.bash_profile
二、修改配置文件
1. 进入${HADOOP_HOME}/etc/hadoop/目录,重命名mapred-site.xml.templat 为 mapred-site.xml,并在其中添加如下配置项
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
2. 修改core-site.xml ,添加如下内容
<property> <name>fs.default.name</name> <value>hdfs://{YARNSERVER}:8020</value> </property>
{YARNSERVER}为部署机器的host或者ip,按照实际情况替换即可。
因为采用了个人虚拟机部署,为了避免每次重启虚拟机后启动hadoop出现各种问题,将hadoop的tmp目录指向了非系统/tmp目录.加入如下配置项
<property> <name>hadoop.tmp.dir</name> <value>/home/han/data/hadoop/tmp</value> </property>
3. 修改yarn-site.xml 文件,添加如下内容
<property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>mapreduce_shuffle</value> <description>shuffle service that needs to be set for Map Reduce to run </description> </property>
为了能够运行mapreduce程序,需要让各个nodemanager在启动时加载shuffle server,shuffle server实际上市jetty/netty server,reduce task通过该server从各个nodemanager上远程复制map task产生的中间结果。
4. 修改hdfs-site.xml,添加如下内容
<property> <name>dfs.replication</name> <value>1</value> </property>
因为是部署环境就一台机器,设置副本数是1.
三、设置免密登录
1. 用户目录下执行 ssh-keygen -t rsa, 将会在~/.ssh/下生成公钥文件id_rsa.pub和私钥文件id_rsa
2. 将公钥文件中的内容复制到相同目录下的authorized_keys文件中:
cat id_rsa.pub >> authorized_keys
四、启动hadoop
1. 格式化 hdfs
${HADOOP_HOME}/bin/hadoop namenode -format
2. 启动hdfs
${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
3. 启动yarn
sbin/yarn-daemon.sh start resourcemanager sbin/yarn-daemon.sh start nodemanager
4. 验证是否启动正常。
* jps验证进程
$ jps 22581 ResourceManager 23455 Jps 22332 NameNode 22452 DataNode 23319 NodeManager
* 通过URL查看yarn的web页面
* 验证hdfs命令 :hdfs fs -ls /
我在这步操作时遇到如下警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
这个是因为$HADOOP_HOME/lib/native/libhadoop.so.1.0.0是在32位环境编译的,当前centos系统是64位的。这个警告并不影响hadoop的功能,可以忽略。如果要想去掉的话,需要重新从源码编译,具体操作可以参考:
http://www.ercoppa.org/Linux-Compile-Hadoop-220-fix-Unable-to-load-native-hadoop-library.htm