1.第一个demo
使用hadoop的mapReduce自带的demo程序统计单词出现的次数
建立文件wcinput
Bash
复制代码
echo123 aa bb > wcinput
Bash
复制代码
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount wcinput ./wcoutput
查看结果
Bash
复制代码
cat wcoutput/part-r-00000
2.配置三台服务器分发脚本
- 分发脚本
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop17 hadoop18 hadoop19
do
echo ===============$host============
#3. 遍历每个参数中的目录
for file in $@
do
#4.判断文件是否存在
if [ -e $file ]
then
#5.获取文件的父目录
pdir=$(cd -P $(dirname $file); pwd)
#6.获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file is not exist!
fi
done
done
存放至usr/local/bin下
- 配置ssh免密登录
#生成rsa密钥对
ssh-keygen -t rsa
#同步ssh公钥
ssh-copy-id hadoop17
ssh-copy-id hadoop18
ssh-copy-id hadoop19
需要现在/etc/hosts中配置hadoop17/18/19的ip地址
3.集群配置
3.1 集群规划
hadoop17 |
hadoop18 |
hadoop19 |
|
HDFS |
NAMENODE,DATANODE |
DATANODE |
SECONDNAMENODE,DATANODE |
YARN |
NODEMANAGER |
RESOURCEMANAGER,NODEMANAGER |
NODEMANAGER |
3.2 集群配置
集群配置,参照上述规划配置:
3.2.1 根据集群规划,配置HDFS和YARN
配置HDFS的NameNode,DataNode
cd /opt/module/hadoop-3.3.1/etc/hadoop
vim core-site.xml
# 在configuration中增加如下配置
<!-- 配置NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop17:8020</value>
</property>
<!-- 配置hadoop的数据存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.1/data</value>
</property>
vim hdfs-site.xml
<!-- 配置nn web访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop17:9870</value>
</property>
<!-- 配置2nn web访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop19:9868</value>
</property>
vim yarn-site.xml
<!-- 指定MR走shuffle -->
<property>
<name>yarn.namemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop18</value>
</property>
vim mapred-site.xml
<!-- 指定MR运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
上述配置在hadoop17节点进行,然后分发至其他两台服务器
xsync hadoop/
3.2.2 配置workers
vim workers
#配置17/18/19
hadoop17
hadoop18
hadoop19
3.2.3 初始化HDFS
只有第一次启动时需要初始化
hdfs namenode -format
3.2.4 启动HDFS集群
sbin/start-dfs.sh
启动报错,ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
使用root用户,需要配置如下环境变量:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
# 在系统变量中配置或者在 启动/停止脚本中配置 sbin/start-dfs.sh sbin/stop-dfs.sh
集群启动成功的标志:
- 三台服务器 jps可以看到启动的服务
- web访问http://192.168.164.17:9870/
- 记得关闭防火墙或修改防火墙策略
3.2.5 启动yarn集群
根据yarn集群规划,RM在18节点
cd /opt/module/hadoop-3.3.1/sbin/
start-yarn.sh
验证yarn集群启动成功的两种方式:
- 三台服务器 jps可以看到启动的服务,查看是否包含RM/NM
- web访问http://192.168.164.18:8088/
- 记得关闭18节点防火墙或者修改防火墙策略