目录
7.3.4、 把bigdata1的配置文件复制到bigdata2和bigdata3
1、环境准备
1.1、服务器和软件准备
服务器 | 内存 | 容量 | 系统 | 软件 | 版本 | 数量 |
linux | 4g | 100G | centos8.0 | jdk | 1.8 | 5 |
hadoop | 2.7.3 |
这里我用的云服务器(大家可以在自己的电脑安装虚拟机,配置内存可以调整为2g,容量的话60G就行),不方便透露服务器的IP,所以3台服务器的IP分别是A、B、C 、E和F
hadoop软件下载可以到对应的官网下载hadoop-2.7.3.tar.gz或者通过百度网盘去下载:
链接:https://pan.baidu.com/s/1kg9gr9X5Sw1G7gGevvPHoA
提取码:732c
1.2、关闭防火墙
永久关闭防火墙:
systemctl disable firewalld.service
1.3、编辑hosts文件
vi /etc/hosts
将ip分别映射为bigdata1、bigdata2、bigdata3、bigdata4、bigdata5
A bigdata1
B bigdata2
C bigdata3
D bigdata4
E bigdata5
将A、B、C、D、E分别改为自己的服务器IP(如果是云服务器,要用内网ip)
1.4、安装jdk
在这儿就不在写安装jdk步骤了,安装jdk的博客有很多,大家可以根据文档自行安装(jdk 1.8版本即可)
1.5、上传安装包
分别在5个服务器上传hadoop-2.7.3.tar.gz到/usr/local/tools路径下
cd /usr/local
mkdir tools
将hadoop-2.7.3.tar.gz都上传到对应的路径下tools路径下
2、Hadoop的目录结构
2.1、解压hadoop到/usr/local路径下
cd /usr/local/tools
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local/
2.2、执行tree命令查看hadoop的树形结构
cd /usr/local/hadoop-2.7.3
tree -d -L 3 hadoop-2.7.3/
执行后结果如下图:
2.3、设置hadoop环境变量
vi ~/.bash_profile
在文件中增加如下代码:
HADOOP_HOME=/usr/local/hadoop-2.7.3
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
增加完截图如下:
执行如下命令是配置生效
source ~/.bash_profile
执行hdfs + tab键,出现如下截图代表配置生效:
注意:tree命令如果执行报错,需要安装tree依赖
依赖包下载可以通过百度网盘链接进行下载或者官网自行下载,下载完成后上传到/usr/local路径下
链接:https://pan.baidu.com/s/1q7JisLGdv1lkVXs3aCIrpw
提取码:dikw
然后执行如下命令:
cd /usr/local
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
3、Hadoop的主要脚本
#启动所有hadoop守护进程
sbin/start-all.sh
#用于启动namenode,datanode,secondarynamenode
sbin/start-dfs.sh
#用于启动nodemanager,resourcemanager
sbin/start-yarn.sh
停止的话start换为stop即可
#主要调用hdfs命令
sbin/hadoop-daemon.sh
#主要调用yarn命令,yarn-daemon.sh和yarn-daemons.sh均可用于启动nodemanage,resourcemanager
sbin/yarn-daemon.sh
使用stop-dfs.sh和stop-yarn.sh关闭所有hadoop守护进程
4、搭建hadoop的本地模式
4.1、本地模式特点
- 没有HDFS
- 没有Yarn
- 只能测试MapReduce程序, 作为一个普通的java程序
- 处理本地的linux文件数据
4.2、本地模式部署
修改配置文件
cd /usr/local/hadoop-2.7.3/etc/hadoop
vi hadoop-env.sh
修改文件中的java
export JAVA_HOME=/usr/local/jdk1.8.0_181
4.3、测试是否成功
mkdir /opt/temp
vim /opt/temp/data.txt
在文件中添加如下内容:
welcome to beijing
welcome to tianjin
beijing is very beautiful
cd /usr/local/hadoop-2.7.3/share/hadoop/mapreduce/
ls hadoop-mapreduce-examples-2.7.3.jar
截图如下:
执行如下命令:
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /opt/temp /opt/output/wc
执行截图如下:
进入 /opt/temp /opt/output/wc目录下
cd /opt/output/wc
有如下两个文件
对每个单词的数量都进行了统计
至此hadoop的本地模式就部署成功了
5、搭建hadoop的伪分布模式
5.1、伪分布模式的特点
- 在单机上,模拟一个分布式的环境
- 具备Hadoop的所有的功能
HDFS: NameNode、DataNode、SecondaryNameNode
Yarn: ResourceManager、NodeManager
- 用于开发和测试
5.2、搭建伪分布模式
5.2.1、主要配置参数如下表
参数文件 | 配置参数 | 参考值 |
hadoop-env.sh | JAVA_HOME | /usr/local/jdk1.8.0_181 |
hdfs-site.x | dfs.replication | 1 |
dfs.permissions | false | |
core-site.xml | fs.defaultFS | hdfs://<hostname>:9000 |
hadoop.tmp.dir | /usr/local/hadoop-2.7.3/tmp | |
mapred-site.xml | mapreduce.framework.name | yarn |
yarn-site.xml | yarn.resourcemanager.hostname | <hostname> |
yarn.nodemanager.aux-services | mapreduce_shuffle |
5.2.2、部署
- 配置hadoop-env.sh,可以参考第4部分
- 配置hdfs-site.xml
主要修改如下内容:
进入到/usr/local/hadoop-2.7.3/etc/hadoop路径下:
cd /usr/local/hadoop-2.7.3/etc/hadoop
vi hdfs-site.xml
<!-- 数据块的冗余度,默认是3 -->
<!-- 一般来说,数据冗余度跟数据节点的个数一致,最大不超过3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 禁用了HDFS的权限检查,暂时可以不配置 -->
<property>
<name>dfs.permissions</name>
<value>fales</value>
</property>
配置截图如下:
- 配置core-site.xml
<!-- 配置nameNode的地址 -->
<!--9000是通信端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata1:9000</value>
</property>
<!--HDFS对应的操作系统目录,默认是linux的tmp目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.3/tmp</value>
</property>
配置截图如下:
创建上面的/usr/local/hadoop-2.7.3/tmp路径
mkdir /usr/local/hadoop-2.7.3/tmp
- 配置mapred-site.xml
拷贝mapred-site.xml(默认是没有的)
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<!--配置Mapreduce运行的框架是Yarn-->
<!--默认没有,只为我们创建了templete文件-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置截图如下:
- 修改yarn-site.xml
vi yarn-site.xml
<!--配置resourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata1</value>
</property>
<!--Mapreduce运行的方式洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置截图如下:
5.3、对NameNode进行格式化
执行命令
hdfs namenode -format
打印出如下截图,表示对NameNode进行格式化成功
到 /usr/local/hadoop-2.7.3/tmp/路径下
执行tree命令,截图如下:
5.4、启动hadoop
执行如下命令:
start-all.sh
启动是共计要输入4次密码,在你不输错的情况下
执行jps命令查看进程,截图如下:
5.5、操作hdfs和yarn
创建路径:
cd /opt/temp
hdfs dfs -mkdir /input
把/opt/temp/data.txt文件上传到/input 目录下
hdfs dfs -put /opt/temp/data.txt /input
执行mapreduce任务
/usr/local/hadoop-2.7.3/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input /opt/output/wc
运行截图如下:
也可以通过浏览器访问http://ip:8088/cluster可以看到任务执行的状态
执行如下命令查看统计结果:
hdfs dfs -cat /opt/output/wc/part-r-00000
统计结果如下图:
至此,hadoop的伪分布模式就部署成功了
6、免密码登录的原理和配置
6.1、免密码登录的原理
6.2、免密码登录的配置
在A服务器上执行如下命令,一直回车
ssh-keygen -t rsa
然后执行
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata1
其他的服务器可以将bigdata1改为其他服务器,@后面是哪个服务器,就是将公钥拷贝到对应的服务器.ssh/authorized.keys文件中
执行过程中需要输入一次密码,截图如下:
6.3、验证配置是否成功
执行如下命令,关闭hadoop服务
stop-all.sh
执行过程中不在需要输入密码,证明配置成功
7、搭建全分布模式
7.1、全分布模式特点
- 真正的分布式环境,用于生产
- 具备hadoop所有功能:hdfs yarn
- 3台机器
7.2、准备工作
- 关闭防火墙
- 设置主机名:在每台服务器上边执行步骤1.3
- 配置免密码登录:在每台服务器上执行
ssh-keygen -t rsa
然后执行分别执行
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata1
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata2
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata3
- 安装jdk
- 同步时间: 通过如下命令同步时间
date -s 2022-05-15
- 在其他两台服务器上配置hadoop的环境变量,按照步骤2.3执行即可
7.3、全分布式架构
7.3.1、主要配置参数如下表
参数文件 | 配置参数 | 参考值 |
hadoop-env.sh | JAVA_HOME | /usr/local/jdk1.8.0_181 |
hdfs-site.xml | dfs.replication | 2 |
dfs.permissions | false | |
core-site.xml | fs.defaultFS | hdfs://<hostname>:9000 |
hadoop.tmp.dir | /usr/local/hadoop-2.7.3/tmp | |
mapred-site.xml | mapreduce.framework.name | yarn |
yarn-site.xml | yarn.resourcemanager.hostname | <hostname> |
yarn.nodemanager.aux-services | mapreduce_shuffle | |
slaves | 从节点地址 |
7.3.2、部署
上述列表中前5项按照伪分布的修改配置文件修改即可,记得按照上述列表修改后面的参数即可(注意每个服务器修改core-site.xml)
第6项从节点地址配置如下:
执行命令
cd /usr/local/hadoop-2.7.3/etc/hadoop
vi slaves
将两个从节点的ip地址或者ip的映射加入到文件中,如下图
7.3.3、对namenode进行格式化
执行命令
hdfs namenode -format
7.3.4、 把bigdata1的配置文件复制到bigdata2和bigdata3
在bigdata1 服务器上分别执行如下命令:
scp -r /usr/local/hadoop-2.7.3/ root@bigdata2:/usr/local
scp -r /usr/local/hadoop-2.7.3/ root@bigdata3:/usr/local
7.3.5、启动hadoop集群
在bigdata1上边启动集群,执行如下命令
start-all.sh
截图如下:
bigdata1上边启动了namenode,bigdata2和bigdata3上启动了datanode
7.3.6、验证hadoop集群是否部署成功
在bigdata1服务器执行如下命令
hdfs dfs -put /opt/temp/data.txt /input
cd /usr/local/hadoop-2.7.3/share/hadoop/mapreduce
执行mapreduce程序
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output/wc
注意:1、如果报如下错误:
原因:可能是使用hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致
解决方案:
- 停止集群
stop-all.sh
- 删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
rm -rf /usr/local/hadoop-2.7.3/tmp/*
- 重新格式化namenode
hdfs namenode -format
- 重新启动hadoop集群
start-all.sh
2、如果报如下错误:
在yarn-root-resourcemanager-VM-0-26-centos.log日志下
解决方案:修改/etc/hosts文件,添加ip和对应的映射即可解决
ip VM-0-19-centos