Hadoop----->完全分布式集群的搭建
在搭建伪分布式集群之前确保以下工作已经完成
1.确保防火墙是关闭的.
[root@hadoop01 ~]# systemctl disable firewalld.service
2.NAT模式和静态IP的确定 (192.168.10.101)
[root@qianfeng01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.10.101
3.确保/etc/hosts文件里 ip和hostname的映射关系
[root@qianfeng01 ~]# vim /etc/hosts
192.168.10.101 hadoop01
4. 确保免密登陆localhost有效
1. 生成秘钥
[root@qianfeng01 ~]# ssh-keygen -t rsa 一路回车下去
2. 将公钥拷贝到远程机器上
[root@qianfeng01 ~]# ssh-copy-id -i qianfeng02
ssh-copy-id的作用:将公钥文件拷贝到远程机器的.ssh隐藏目录下,并更名成authorized_keys文件
检测是否可用
[root@hadoop01 ~]# ssh localhost
Last login: Sat Dec 4 15:24:09 2021 from 192.168.10.1
[root@hadoop01 ~]# ssh 0.0.0.0
Last login: Sat Dec 4 16:16:01 2021 from localhost
[root@hadoop01 ~]# ssh 127.0.0.1
Last login: Sat Dec 4 16:17:53 2021 from 192.168.10.1
成功!!!!
5. jdk和hadoop的环境变量配置
-1. 上传和解压两个软件包
[root@hadoop01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@hadoop01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
-2. 进入local里,给两个软件更名
[root@hadoop01 ~]# cd /usr/local/
[root@hadoop01 local]# mv 1.8.0_221/ jdk
[root@hadoop01 local]# mv hadoop-2.7.6/ hadoop
-3. 配置环境变量
[hadoop@hadoop01 local]# vi /etc/profile
.....省略...........
#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
6.关闭selinux
[root@hadoop01 ~]# vi /etc/selinux/config
.........co
SELINUX=disabled #改这里
.........
开始搭建环境
第一步
修改core-site.xml的配置文件
[root@hadoop01 ~]# cd $HADOOP_HOME/etc/hadoop/
[root@hadoop01 hadoop]# vi core-site.xml
<configuration>
<!-- hdfs的地址名称:schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
第二步
修改 hdfs-site.xml的配置文件
[root@hadoop01 hadoop]# vi hdfs-site.xml
<configuration>
<!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块的大小(128M),下面的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:50070</value>
</property>
</configuration>
第三步
配置mapred-site.xml文件
[root@hadoop01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@hadoop01 hadoop]# vi mapred-site.xml
<configuration>
<!-- 指定mapreduce使用yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- 配置作业历史服务器的http地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
</configuration>
第四步
配置yarn-site.xml文件
[root@qianfeng01 hadoop]# vi yarn-site.xml
<configuration>
<!-- 指定yarn的shuffle技术-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!--下面的可选-->
<!--指定shuffle对应的类 -->
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--配置resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8032</value>
</property>
<!--配置resourcemanager的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<!--配置resoucemanager的资源调度的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop01:8031</value>
</property>
<!--配置resourcemanager的管理员的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop01:8033</value>
</property>
<!--配置resourcemanager的web ui 的监控页面-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop01:8088</value>
</property>
</configuration>
第五步
配置hadoop-env.sh脚本文件
[root@hadoop01 hadoop]# vi hadoop-env.sh
.........
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk
.........
第六步
配置slaves文件
此文件用于指定datanode守护进程所在的机器节点主机名
[root@hadoop01 hadoop]# vi slaves
hadoop01
hadoop02
hadoop03
第七步
配置yarn-env.sh文件
此文件可以不配置,不过,最好还是修改一下yarn的jdk环境比较好
[root@hadoop01 hadoop]# vi yarn-env.sh
.........
# some Java parameters
export JAVA_HOME=/usr/local/jdk
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=$JAVA_HOME
fi
.........
第八步
克隆两台虚拟机
hadoop01—克隆–>hadoop102 修改IP(第二步)为:192.168.10.102;修改映射关系(第三步):192.168.10.102 hadoop02
hadoop01—克隆–>hadoop103 修改IP(第二步)为:192.168.10.103;修改映射关系(第三步):192.168.10.103 hadoop03
这样hadoop02和hadoop03就有了跟hadoop01一样的配置
第九步
格式化NameNode
[root@hadoop01 hadoop]# hdfs namenode -format
**第十步
启动HDFS**
启动yarn
[root@hadoop01 hadoop]# start-dfs.sh
[root@hadoop01 hadoop]# start-yarn.sh
jps命令查看守护进程
[root@qianfeng01 ~]# jps
2198 NodeManager
1769 DataNode
3417 Jps
2026 ResourceManager
1631 NameNode
验证是否可用
WebUI_50070
可以在浏览器上输入:192.168.10.101:50070 来查看一下伪分布式集群的信息
WebUI_8088
单词统计进行验证
在根目录下创建一个目录
[root@hadoop01 ~]# vim ~/data
在创建的目录中创建文件
[root@hadoop01 ~]# cd ~/data
[root@hadoop01 data]# touch test.txt
在文件中写入多个单词
[root@qianfeng01 data]# vim test.txt
在hdfs上创建存储目录/
[root@qianfeng01 hadoop]# hdfs dfs -mkdir /input
将本地文件系统上的上传到hdfs上,并在web上查看一下
[root@qianfeng01 hadoop]$ hdfs dfs -put ~/data/test.txt /input/
运行自带的单词统计程序wordcount
[root@qianfeng01 hadoop]# cd $HADOOP_HOME
[root@qianfeng01 hadoop]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input /out
查看统计结果
[root@qianfeng01 hadoop]# hdfs dfs -cat /out/part-r-00000
chain 1
colths 1
do 1
heppy 1
is 1
mei 2
new 2
something 1
tang 3
to 2
tom 1
want 1
welcome 1
what 1
year 2
yue 1