基础配置
三台机器上编辑/etc/hosts配置文件,修改主机名。
三台机器在集群中担任的角色:
- master:NameNode、DataNode、ResourceManager、NodeManager
- node1:DataNode、NodeManager
- node2:DataNode、NodeManager
配置ssh免密登录
# 三台机器上分别执行,互相免密登录
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub node1
ssh-copy-id -i ~/.ssh/id_rsa.pub node2
安装JDK
# 官网下载
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
http://anchnet-script.oss-cn-shanghai.aliyuncs.com/oracle/jdk-8u171-linux-x64.rpm
yum localinstall jdk-8u171-linux-x64.rpm -y
配置java环境变量
# 三台均操作
vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
JAVA_BIN=/usr/java/jdk1.8.0_171-amd64/bin
JRE_HOME=/usr/java/jdk1.8.0_171-amd64/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# source命令加载配置文件,让其生效
source /etc/profile
Hadpop配置分发
下载hadoop
https://www.apache.org/dist/hadoop/common/
wget https://www.apache.org/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
解压
tar -zxvf hadoop-2.6.5.tar.gz -C /data/modules
查看hadoop目录结构
cd /data/modules/hadoop-2.6.5/
- bin目录存放可执行文件
- etc目录存放配置文件
- sbin目录下存放服务的启动命令
- share目录下存放jar包与文档
配置hadoop环境变量
vim ~/.bash_profile
export HADOOP_HOME=/data/modules/hadoop-2.6.5/
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source !$
编辑hadoop配置文件
- 编辑etc/core-site.xml
<configuration>
<property>
<name></name>
<value>hdfs://10.234.2.169:8020</value>
# 指定默认的访问地址以及端口号
</property>
- 编辑etc/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/app/tmp/dfs/name</value>
# namenode临时文件所存放的目录
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/app/tmp/dfs/data</value>
# datanode临时文件所存放的目录
</property>
- 创建数据目录
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data
- 编辑etc/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
- 编辑etc/mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim !$
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
# 指定mapreduce运行在yarn框架上
</property>
</configuration>
- 配置从节点的主机名etc/slaves
node1
node2
2台node节点也需创建对应安装目录,环境变量配置等
scp ~/.bash_profile node1:~/.bash_profile
scp * node1:/data/modules/hadoop-2.6.5/etc/hadoop/
# 2台节点上如下操作
source ~/.bash_profile
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data
Hadoop格式化及启停
对NameNode做格式化,只需要在master上执行即可
[root@master hadoop]# hdfs namenode -format
# 格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中
格式化之后就可以启动Hadoop集群
# sbin目录下,执行脚本,执行后要输入master服务器的密码
[root@master hadoop]# ./
查看机器进程
- master
[root@master sbin]# jps
19237 SecondaryNameNode
22231 NodeManager
21978 ResourceManager
19019 NameNode
30941 Jps
21327 DataNode
# 如果master上的某些服务进程未启动,需要再次手动执行脚本启动
# 启动NameNode
sbin/ start namenode
# 启动DataNode
sbin/ start datanode
# 启动SecondaryNameNode
sbin/ start secondarynamenode
# 启动Resourcemanager
sbin/ start resourcemanager
# 启动nodemanager
sbin/ start nodemanager
- node
[root@node1 ~]# jps
25827 Jps
18742 DataNode
20583 NodeManager
访问测试
访问主节点 50070
访问主节点 YARN的web页面
点击“Active Nodes”查看存活的节点
执行命令
hdfs dfs -ls /
hdfs dfs -mkdir /test123
hdfs dfs -put ./test.sh /test123
# 然后去其他节点查看,不同的节点,访问的数据也是一样的
hdfs dfs -ls /
运行MapReduce Job
在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子。位置在/data/modules/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar
- 创建输入目录
bin/hdfs dfs -mkdir -p /test1/input
# 原始文件
[root@master hadoop-2.6.5]# cat /data/hadoop/test1.input
hadoop hadoop hive
mapreduce hive storm
sqoop hadoop hive
spark hadoop hbase
- 上传到HDFS的/test1/input目录中
- 运行WordCount MapReduce Job
[root@master hadoop-2.6.5]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test1/input /test1/output
YARN web控制台查看
- 查看输出结果
[root@master hadoop-2.6.5]# hdfs dfs -ls /test1/output
Found 2 items
-rw-r--r-- 3 root supergroup 0 2018-12-13 15:22 /test1/output/_SUCCESS
-rw-r--r-- 3 root supergroup 60 2018-12-13 15:22 /test1/output/part-r-00000
# output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果。一个reduce会产生一个part-r-开头的文件。
# 查看执行结果
[root@master hadoop-2.6.5]# hdfs dfs -cat /test1/output/part-r-00000
hadoop 4
hbase 1
hive 3
mapreduce 1
spark 1
sqoop 1
storm 1
# 结果是按照键值排序好的
- 停止Hadoop
# 主节点上执行 ,如果进程未全部终止,就执行如下脚本对应停止。
[root@master hadoop-2.6.5]# sbin/ stop namenode
stopping namenode
[root@master hadoop-2.6.5]# sbin/ stop datanode
stopping datanode
[root@master hadoop-2.6.5]# sbin/ stop resourcemanager
stopping resourcemanager
[root@master hadoop-2.6.5]# sbin/ stop nodemanager
stopping nodemanager
开启历史服务
Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
- 开启日志聚集
# Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
# yarn.log-aggregation-enable:是否启用日志聚集功能。
# yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。
将配置文件发布到其他节点:
scp etc/hadoop/yarn-site.xml node1:/data/modules/hadoop-2.6.5/etc/hadoop/
scp etc/hadoop/yarn-site.xml node2:/data/modules/hadoop-2.6.5/etc/hadoop/
重启Yarn进程和HistoryServer进程
sbin/
sbin/
sbin/ stop historyserver
sbin/ start historyserver
- 测试日志聚集 运行一个demo MapReduce,使之产生日志:
[root@master hadoop-2.6.5]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount2 /test1/input /test1/output2
# 访问主节点的19888端口,运行job后就可以在web页面查看各个Map和Reduce的日志了。