Hadoop多节点的集群部署(源码安装)
一、部署环境:
我的测试环境:
centos7 64bit 3台
node1 192.168.1.8 master slave
node2 192.168.1.9 slave
node3 192.168.1.11 slave
软件版本:
hadoop2.7.3 jdk1.8
二、准备工作:
1.创建hadoop用户:
#useradd -m hadoop -s /bin/bash
#passwd Hadoop
为 hadoop 用户增加管理员权限方便部署,执行:visudo
2.配置SSH无密码登录:
利用 ssh-keygen 生成密钥
3.安装Java环境:
jdk1.8并配置JAVA_HOME 环境变量
三、安装 Hadoop:
1.解压缩Hadoop2.7.3并配置Hadoop环境变量:vi /etc/profile
# Hadoop Environment Variables
export HADOOP_HOME=/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
#sudo chown -R hadoop:hadoop /hadoop # 修改文件权限
安装成功则会显示 Hadoop 版本信息:
#cd /Hadoop
#./bin/hadoop version
2.修改主机名和hosts文件:
192.168.1.82 node1.com node1
192.168.1.85 node2.com node2
192.168.1.86 node3.com node3
3.修改相关配置文件:
Hadoop配置文件位于/hadoop/etc/hadoop/ 中
(1)Slaves:
加入相应的datanode主机名
(2)core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
(3)hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/tmp/dfs/data</value>
</property>
(4)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>
(5)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>
配置好后,将Master上的/usr/local/Hadoop 文件夹复制到各个节点上
4.格式化NameNode:
hdfs namenode -format
5.启动 hadoop:
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
若成功启动则会列出如下进程:
NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer(Master)
DataNode 和 NodeManager(Slave)
注意:缺少任一进程都不可。可在 Master 节点上用hdfs dfsadmin -report查看 DataNode 是否正常启动,如果Live datanodes 不为 0 ,而是你datanodes个数,则说明集群启动成功。也可通过 Web 看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。
四、执行实例:
1.创建 HDFS 上的用户目录:
hdfs dfs -mkdir -p /user/hadoop
2.将/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中:
hdfs dfs -mkdir input
hdfs dfs -put /hadoop/etc/hadoop/*.xml input
3.可通过查看 DataNode 的状态,看占用大小是否有改变。
4.运行 MapReduce 作业:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
会显示 Job 的进度。
5.可以通过 Web 界面查看任务进度:
http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可看到任务的运行信息
6.执行完毕后可看到输出结果。
hdfs dfs –cat output/*
五、HDFS常用操作:
hadoopdfs -ls 列出HDFS下的文件
hadoop dfs -ls in 列出HDFS下某个文档中的文件
hadoop dfs -put test1.txt test 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功
hadoop dfs -get in getin 从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录
hadoop dfs -rmr out 删除指定文件从HDFS上
hadoop dfs -cat in/* 查看HDFS上in目录的内容
hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下
hadoop dfsadmin -safemode leave 退出安全模式
hadoop dfsadmin -safemode enter 进入安全模式