环境及软件版本
- CentOs 7
- hadoop-2.6.1.tar.gz
Hadoop的安装
解压文件
将hadoop-2.6.1.tar.gz保存在/usr/local/src目录下,解压:
tar -zxvf hadoop-2.6.1.tar.gz
执行后,Hadoop会被解压到当前目录:如:/usr/local/src/hadoop-2.6.1
设置Hadoop环境变量
- 打开 ~/.bashrc文件:
vim ~./bashrc
- 文档最后追加如下内容,保存退出。
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使Hadoop设置生效:
source ~/.bashrc
- 查看Hadoop版本信息:
hadoop version
注意:version 之前没有“-”
Hadoop参数设置
进入/usr/local/src/hadoop-2.6.1/etc/hadoop目录对以下文件进行编辑
- slaves
- hdfs-site.xml
- core-site.xml
- mapered.site.xml.template
- yarn-site.xml
修改slaves文件
删除原有内容,修改为:
slave1
slave2
修改hdfs-site.xml
- 在hadoop-2.6.1下创建临时目录:
mkdir tmp
- 在configuration标签中添加内容:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/tmp/dfs/data</value>
</property>
</configuration>
修改core-site.xml
添加内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.253.100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/tmp</value>
</property>
</configuration>
fs.defaultFs的value值以master主机的IP为准
将mapred-site.xml.templates改名为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>
修改yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Hadoop在子节点上的设置
将修改完成的hadoop-2.6.1目录打包并复制到各个slave节点
tar -zcf ./hadoop-master.tar.gz ./hadoop-2.6.1
scp -rp hadoop-master.tar.gz slave1:/usr/local/src
scp -rp hadoop-master.tar.gz slave2:/usr/local/src
在各个slave节点上解压hadoop-master.tar.gz
tar -zxvf hadoop-master.tar.gz
初始化及测试
- 在master节点上执行namenode格式化
#hdfs namenode -format
- 如果提示命令找不到就是PATH中设置的Hadoop相关环境变量不正确
- 此命令在hadoop-2.6.1/bin下
- 启动进程
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
- 使用jps查看所有守护进程启动情况
jps -l
显示结果如下:
4900 org.apache.hadoop.hdfs.server.namenode.NameNode
5064 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
5518 org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer
5202 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
8508 sun.tools.jps.Jps
jps命令在JAVA_HOME/bin下
- 测试
hadoop fs -ls /
首次使用时,目录为空。
- 复制文件到dfs并验证是否复制成功
//创建test.txt文件并复制到dfs的根目录
hadoop fs -put ~/test.txt /
//验证是否成功
hadoop fs -ls /
//打开test.txt文件
hadoop fs -cat /test.txt
复制出错,有可能是防火墙的问题,在三台主机上关闭防火墙再试(systemctl stop firewalld)。
- 关闭进程
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-deamon.sh stop historyserver
其他
- 查看DataNode节点是否正常
hdfs dfsadmin -report
常见问题:
运行时提示:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
- 修改~/.bashrc,添加:
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
- 将/usr/local/src/hadoop-2.6.1/lib/native目录下的文件复制到/usr/local/src/hadoop-2.6.1/lib目录