环境说明:
- Centos 8, 三个节点
服务器配置
(1)设置主机名(三个节点)
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=had-node1
(2)配置IP、主机名映射
vi /ect/hosts
192.168.33.101 had-node1
192.168.33.102 had-node
192.168.33.103 had-node3
(3)配置免密ssh登陆(从主节点到从节点)
-
生成ssh免登陆密钥,生成私钥和公钥
ssh-keygen -t rsa
-
将公钥拷贝到免密登陆的目标机器上
ssh-copy-id had-node1
ssh-copy-id had-node2
ssh-copy-id had-node3
(4)配置防火墙
systemctl stop firewalld.service (临时关闭)
systemctl disable firewalld.service (禁止firewall开机启动)
firewall-cmd --state (查看防火墙状态)
一、安装jdk
(先检查是否安装了JDK, 如果安装了,先卸载当前版本)
-
(1) 去官网下载jdk , 并解压
-
(2)设置环境变量
打开文件
vi /etc/profile
在该文件末尾加上
export JAVA_HOME=/root/java/jdk1.8.0_251
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新配置
source /etc/profile
-
(3) 检查
java -version
-
(4)scp到从节点
scp -r ~/java root@had-node2:/root/ scp -r ~/java root@had-node3:/root/ scp -r /etc/profile root@had-node2:/etc/ scp -r /etc/profile root@had-node3:/etc/
注意: 到从节点机器也要刷新配置
二、Hadoop 安装包目录结构:
(1)bin: Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现, 用户可以直接使用这些脚本管理和使用Hadoop。
(2)etc:Hadoop配置文件所在的目录, 包括core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml等相关的配置文件。
(3)include:对外提供的编程库头文件(具体动态库和静态库在lib目录中)。这些头文件均是C++定义的。通常用于C++程序访问HDFS或者编程MapReduce程序。
(4)lib:该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。
(5)libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数等信息。
(6)sbin:Hadoop管理脚本所在的目录, 主要包含HDFS和YARN中各类服务的启动/关闭脚本。
(7)share:Hadoop各个模块编译后的jar包所在的目录。
三、Hadoop配置文件修改
Hadoop安装主要就是配置文件的修改, 一般在主节点进行修改, 完成后scp下发给其他各个从节点。
3.1 hadoop-env.sh
文件中设置的是hadoop运行时需要的环境遍历。JAVA_HOME是必须设置的。即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行, 它也是把当前的执行环境当作远程服务器。
vi hadoop-env.sh
export JAVA_HOME=/root/java/jdk1.8.0_251
3.2 core-site.xml
Hadoop核心配置
vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://had-node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/David_Wolfowitz/Hadoop/tmp</value>
</property>
3.3 hdfs-site.xml
vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>had-node2:50090</value>
</property>
3.4 mapred-site.xml
vi mapred-site.xml
<!-- 指定mr运行时框架, 这里指定是在yarn上, 默认时local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.5 yarn-site.xml
vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>had-node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3.6 slaves
vi slaves
had-node1
had-node2
had-node3
四、Hadoop集群启动
1、启动方式
要启动Hadoop集群, 需要启动HDFS和YARN两个集群。
注意:首次启动HDFS时, 必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上是不存在的。
hdfs namenode -format
或者
hadoop namenode -format
关于hdfs的格式化:
- 首次启动需要进行格式化
- 格式化本质是进行文件系统的初始化操作,创建一些自己需要的文件
- 格式化之后, 集群启动成功, 后续再也不要进行格式化
- 格式化的操作在hdfs集群的主角色(namenode)所在的机器上操作
1.1 单节点逐个启动
在主节点上使用以下命令启动HDFS NameNode:
hadoop-daemon.sh start namenode
在每个节点上使用以下命令启动 HDFS DataNode:
hadoop-daemon.sh start datanode
在主节点上使用以下命令启动YARN ResourceManager:
hadoop-daemon.sh start nodemanager
以上脚本位于$HADOOP_PREFIX/sbin/目录下, 如果想停止某个节点上的某个角色,只需将命令中的start改为stop即可。
1.2 脚本一键启动
如果配置了/etc/hadoop/slaves和ssh免密登录, 则可以使用程序脚本启动所有Hadoop两个集群的相关进程, 在主节点所设定的机器上执行。
(在所安装的hadoop路径下的sb)
hdfs:
$HADOOP_PREFIX/sbin/start-dfs.sh
yarn:
$HADOOP_PREFIX/sbin/start-yarn.sh
停止集群:
stop-dfs.sh、stop-yarn.sh
QAQ:
hdfs:
Starting namenodes on [had-node1]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [had-node2]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
在start-dfs.sh 和stop-dfs.sh中添加:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
yarn:
在start-yarn.sh 和 stop-yarn.sh中添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
参考文献:
【2】 Hadoop之JDK的安装