hadoop完全分布式需要准备3台以上客户机,三台客户机必须具有ssh无密登录,3台客户机均安装jdk和hadoop的环境变量。
1.复制客户机上以前的hadoop伪分布式运行的hadoop相关文件
采用命令:scp-r 初始文件名 root@主机名:复制文件路径
2.配置ssh无密登录
1)生成当前用户和root的公钥和私钥(需切换用户)
命令:ssh Keygen -t rsa
2)将公钥copy到需要无密登录的客户机上
命令:ssh-copy-id 主机名
注:本机也需要将copy公钥至本机
3.集群配置计划
4.修改配置文件
1)修改core-site.xml,配置内容如下
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
2)修改hadoop-env.sh
配置java_home
3) 修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
注:配置注释如下:指定dfs副本数量,指定secondarynamenode地址
4)修改yran-evn.sh
配置java_home
5)修改yran-site.xml
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
</configuration>
6)修改mapred.env.sh
配置java_home
7)修改mapred-site.xml
<!-- 指定 mapreduce 运行在 yarn 上,默认为local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5.将配置好的文件同步到其余两台客户机上
可用命令:rsync -rvl 地址 用户@主机名:目标地址
或用shell脚本传输:脚本需要建立在:/user/local/bin/ 下才能在系统运行
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));
then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++));
do
echo $pdir/$fname $user@hadoop$host:$pdir
echo --------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
6.删除之前的logs data文件
7.格式化namenode
命令: bin/hdfs namenode -format
8.启动hdfs
sbin/start-dfs.sh 需在namenode指定的主机上运行
9.运行yran
sbin/start-yarn.sh 需在resourcemanager指定的主机上运行
10.上传文件测试集群
新建目录:hadoop fs -mkdir -P 目录
上传文件:hadoop fs -put 原始文件地址 hdfs存放目录
注:block size大小默认为128M,大于128M的文件存放两个block
存放文件的地址为:/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-468166916-192.168.25.102-1563183034389/current/finalized/subdir0/subdir0