hadoop集群的搭建
传送门:本地虚拟机集群的搭建:https://blog.csdn.net/gg_xiajie/article/details/118061715
一、JDK安装
hadoop集群需要jdk的支持,本次以jdk1.8为例,有多种安装方式,最简单的为yum一键安装
yum install ****
此次安装选择手动安装的方式
1、首先下载jdk包
官网地址:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
下载图中标记的Linux x64 Compressed Archive,不要下错了
2、上传到liunx
我这里使用的是SecureCRT+FX 8.7组合进行远程操作,你也可以用xftp或者本地文件共享的形式上传
SecureCRT+FX 8.7下载地址:https://download.csdn.net/download/gg_xiajie/19738466
内有注册方法
我是上传到 /usr/local/lib64目录,具体自定义,一般在/usr/local下
3、解压文件
使用tar命令解压
tar -zxvf jdk-8u291-linux-x64.tar.gz
为了方便,我重新命名了一下
mv jdk-8u291-linux-x64/ jdk8
删除压缩包
rm jdk-8u291-linux-x64.tar.gz
4、配置环境变量
vi /etc/profile
在文件尾部追加
export JAVA_HOME=/usr/local/lib64/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${PATH}:${JAVA_PATH}
配置完成如下图所示:
wq保存,然后刷新环境变量,让其立即生效
source /etc/profile
测试安装是否成功
java -version
javac
运行结果如下:
至此,jdk安装完毕,其余机器操作相同
这里说一个小技巧,只需要在其他机器上执行第四步就可以了
在安装好的机器上执行下scp命令,将文件拷过去
命令格式:scp [filename] [username@ip:filepath]
文件夹的话需要带上 -r 指令,如下所示(ps:我是配了host,所以用hadoop02代替了192.168.0.102)
scp -r jdk8/ root@hadoop02:/usr/local/lib64/
二、hadoop安装
1、安装前置环境:
由于开始选择的是最小安装,需要安装下常用的环境
Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方repository 中是找不到的)
yum install -y epel-release
工具包集合,包含 ifconfig 等命令
yum install -y net-tools
vim:编辑器
yum install -y vim
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
2、安装hadoop
与jdk相同,都是拆箱及用
选用的版本是相对比较新的3.1.3,官网地址:
https://hadoop.apache.org/release/3.1.3.html
下载完之后上传到liunx,上传一份就行,其他机器安装完成之后拷贝即可
解压并重命名
tar -zxvf hadoop-3.1.3.tar.gz
mv hadoop-3.1.3 hadoop
3、配置环境变量
除了直接在系统文件里更改(vim /etc/profile)之外,还有另外一种形式
profile文件中有这么一行,便利所有/etc/profile.d/文件夹下的所有sh文件进行加载
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
我们可以自定义一个文件
cd /etc/profile.d/
vim my-env.sh
将下面的配置贴进去即可
export HADOOP_HOME=/usr/local/lib64/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
然后刷新一下环境变量
source /etc/profile
看下是否安装成功,注意没有**’-’**
hadoop version
至此,第一台机器安装完成
4、拷贝到其他机器
通过scp命令拷贝到另外两台机器
# 命令介绍-r 代表递归,拷贝文件夹使用
scp -r [SourcePath] [targetUserName]@[host]:[targetPath]
# eg:拷贝到192.168.0.102上面
scp -r /usr/local/lib64/hadoop/ root@hadoop02:/usr/local/lib64/
# 拷贝到192.168.0.103上面
scp -r /usr/local/lib64/hadoop/ root@hadoop03:/usr/local/lib64/
5、配置免密ssh登录
ssh免密登录原理 ,在本地的允许访问目录中存放有对方的公钥,对方访问的时候就不需要密码了
# 创建密钥对
ssh-keygen -t rsa
创建完毕后可以在当前用户的目录下的.ssh文件夹中查看,.ssh为隐藏文件,使用ls -a展示隐藏文件
# 查看私钥
cat /root/.ssh/id_rsa
# 查看公钥
cat /root/.ssh/id_rsa.pub
将公钥拷贝到要免密登录的目标机器上
# 为了方便,当前机器也拷贝一份
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
拷贝完成后目标机器的.ssh出现 一个名为:authorized_keys的文件,这个文件中存放的就是允许无密访问的机器的公钥
这个 时候使用hadoop01这台机器访问其他机器就不需要密码了
三、Hadoop的配置
1、集群部署规划
NameNode 和 SecondaryNameNode 不要安装在同一台服务器
ResourceManager 也很消耗内存,也不要和 NameNode、SecondaryNameNode 配置在同一台机器上
Hadoop01 | Hadoop02 | Hadoop03 | |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode 、DataNode |
YARN | NodeManager | ResourceManager、NodeManager | NodeManager |
2、配置集群
相关配置文件都在[filepath]/etc/hadoop下,我安装的是在/usr/local/lib64/hadoop/etc/hadoop
(1)核心配置文件core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/lib64/hadoop/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
(2)HDFS 配置文件hdfs-site.xml
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:9868</value>
</property>
</configuration>
(3) YARN 配置文件yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<!-- 环境变量的继承 注意value中不要有回车-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
(4)MapReduce 配置文件mapred-site.xml
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)配置workers
中间不要有空格,最后不要有空行
hadoop01
hadoop02
hadoop03
每个机器上都是使用相同的配置
四、启动集群
第一次启动需要进行初始化,在hadoop01上进行初始化,因为NameNodeManager在hadoop01上
注意:如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。
hdfs namenode -format
1、启动hdfs
在hadoop01启动hdfs,此命令在hadoop/sbin下,之前配置过环境变量,任意位置输入都可以
start-dfs.sh
启动完毕后可以打开可视化图形页面查看
# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/
2、启动yarn
在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下
start-yarn.sh
同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088
http://hadoop02:8088/
start-dfs.sh
启动完毕后可以打开可视化图形页面查看
# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/
[外链图片转存中…(img-67E82zmX-1624284902964)]
2、启动yarn
在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下
start-yarn.sh
同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088
http://hadoop02:8088/
[外链图片转存中…(img-DQR1U2Ls-1624284902966)]
至此,hadoop集群环境搭建完毕