hadoop集群搭建(超详细)
一.部署SSH工具
1.下载SHH工具
官网地址: http://www.hostbuf.com/
2.安装FinalShell工具
双击打开安装包,进行傻瓜式安装
接受协议
选择FinalShell组件
自行选择安装路径
安装完成,点击 “关闭”
3.连接虚拟机设备
双击打开FinalShell
新建SSH连接
连接hadoop01虚拟机
双击连接
连接成功
二.修改配置文件和免密配置
1.修改配置文件
配置hosts文件
vim /etc/hosts
拷贝host文件
scp /etc/hosts root@hadoop02:/etc/hosts
scp /etc/hosts root@hadoop03:/etc/hosts
在hadoop02和hadoop03进行检查hosts是否拷贝成功(由于作者隐私问题在这里对ip进行大码,大家做的时候要保证ip和虚拟机保持一致)
2.生成密匙
ssh-keygen -t rsa
生成密匙
### 3.拷贝密匙文件到子节点
拷贝文件
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03
按照方法分别将密匙拷贝到hadoop02和hadoop03
测试免密
三.jdk安装和配置
1.新建文件夹存放文件
在根目录opt下分别创建local和soft文件夹,local用来存放上传的压缩包,soft用来存放解压之后的文件
mkdir /opt/local
mkdir /opt/soft
cd opt
ll
2.下载jdk压缩包
https://www.oracle.com/java/technologies/downloads/
3.查看系统自带的jdk并删除
查看系统自带
java -version
rpm -qa | grep java
删除jdk
# 挨个删除每一个包,(删除所有.noarch 文件)
rpm -e --nodeps 包名
# 一次性删除
yum remove *openjdk*
删除成功
4.上传并解压jdk压缩包
进入opt下的local文件夹
cd /opt/local
上传jdk压缩包
rz
查看上传的压缩包
将文件解压到 opt下的soft(解压过程中不能做其他的事情,容易解压出错!!!)
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/soft
进入soft查看是否解压成功
cd /opt/soft
ll
创建软连接
ln -s jdk1.8.0_144/ jdk
5.配置jdk环境
编辑配置文件
vi /etc/profile
按“i”进入编辑模式
编辑好配置文件后“Esc”退出编辑模式
“:wq”保存退出
6.刷新jdk配置文件,并检查新安装的jdk
#刷新配置文件
source /etc/profile
#检查新装的jdk
java -version
四.Hadoop安装和配置
1.下载Hadoop
官网下载hadoop
下载官网 https://hadoop.apache.org/releases.html
2.上传并解压jdk压缩包
rz
ll
解压hadoop
tar -zxvf hadoop-3.2.4\ \(1\).tar.gz -C /opt/soft/
创建软连接
ln -s hadoop-3.2.4/ hadoop
3.配置Hadoop环境
vim /etc/profile
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
按“i”进入编辑模式
编辑好配置文件后“Esc”退出编辑模式
“:wq”保存退出
在
hadoop-env.sh
mapred-env.sh
yarn-env.sh
中分别添加JAVA_HOME环境
export JAVA_HOME=/opt/soft/jdk1.8.0_144
刷新hadoop配置文件,使配置文件生效
source /etc/profile
4.查看Hadoop版本
hadoop version
五.修改Hadoop配置文件
进入hadoop文件夹
cd /opt/soft/hadoop/etc/hadoop
1.修改配置文件 core-site.xml,插入
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.74.11:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/local/soft/hadoop/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1</value>
</property>
</configuration>
2.修改配置文件 hdfs-site.xml,插入
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.74.11:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.74.12:9868</value>
</property>
</configuration>
3.配置mapred-site.xml,插入
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.126.192:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.126.192:19888</value>
</property>
<!-- 每个MR最多申请的内存 -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
</configuration>
4.配置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>192.168.74.11</value>
</property>
<!-- 环境变量的继承 -->
<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>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://192.168.74,11:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>3</value>
</property>
</configuration>
5.配置workers
直接插入更改
hadoop01
hadoop02
hadoop03
六.向其它节点分发配置文件
scp -r /opt/soft/hadoop-3.2.4 root@hadoop02:/opt/soft
scp -r /opt/soft/hadoop-3.2.4 root@hadoop03:/opt/soft
七.集群格式化
hadoop namenode -format
八.集群重启
进入 /opt/soft/hadoop/sbin/
cd /opt/soft/hadoop/sbin/
1.文件权限不够启动失败
问题:文件没有权限,无法执行
解决:
(1)在文件 start-dfs.sh 和stop-dfs.sh中添加以下代码
HDFS_DATANODE_USER=root
HADOOP_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
(2) 在文件 start-yarn.sh 和stop-yarn.sh中添加以下代码
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.启动Hadoop ( ./ 在这里是执行的意思)
./start-dfs.sh
3.启动yarn
./start-yarn.sh
九.查看进程
1.查看进程
jps
hadoop01的进程
hadoop02的进程
hadoop03的进程
进入hadoop的web网站访问
2.停止hadoop
./stop-dfs.sh
3.停止yarn
./stop-yarn.sh
十.小技巧
描述:因为我们的启动和停止文件在 /opt/soft/hadoop/sbin/ 目录下,每次启动进程都需要打开目录,很麻烦
解决:
在 /etc/profile 配置文件中添加
#打开文件
vim /etc/profile
添加配置
:$HADOOP_HOME/sbin
完成配置后就不用再进到目录里启动进程了
在Linux系统中,/sbin是一个特殊的目录,用于存放系统管理员和基本系统维护命令。该目录下的可执行文件通常需要具有特殊的权限以运行,因为它们对系统的操作具有潜在的风险和影响。
配置/sbin系统变量的意义在于将该目录添加到系统的环境变量中,使得系统中的任何位置都可以直接执行位于/sbin目录下的命令,而无需指定完整的路径。这样,系统管理员就可以更加方便地使用和调用这些系统管理和维护命令,提高工作效率。
通过将/sbin添加到系统的PATH环境变量中,系统命令解析器(如bash)将会在搜索可执行文件时自动包含该目录,从而使得系统中的任何用户都可以直接运行/sbin目录下的命令,而无需输入完整路径。