一、hadoop集群简介
- Hadoop集群包括两个集群:HDFS集群、YARN集群
- 两个集群逻辑上分离、通常物理上在一起
- 两个集群都是标准的主从架构集群

二、hadoop集群搭建
1、机器规划:
| 主机 | 角色 |
| node130 | NameNode、DataNode、ResourceManager、NodeManager |
| node131 | SecondaryNameNode、DataNode、NodeManager |
| node132 | DataNode、NodeManager |
角色规划的准则
根据软件工作特性和服务器硬件资源情况合理分配
比如依赖内存工作的NameNode是不是部署在大内存机器上
角色规划注意事项
资源上有抢夺冲突的,尽量不要部署在一起
工作上需要互相配合的。尽量部署在一起

2、环境准备
ssh免密登录(只需配置node130免密登录131,132即可)
node130机器执行如下命令:
ssh-keygen -t rsa -- 生成公钥私钥(连敲三次回车) cd /root/.ssh/ -- 进入私钥路径 ssh-copy-id -i ~/.ssh/id_rsa.pub node131 -- 拷贝公钥到免密登录机器 ssh-copy-id -i ~/.ssh/id_rsa.pub node132
执行完后进入node131或node132的目录~/.ssh/authorized_keys,查看文件是否发生了变化,并进行验证

集群时间同步(3台机器分别执行)
ntpdate ntp5.aliyun.com
jdk1.8安装(略)
创建统一工作目录(3台机器)
mkdir -p /export/server/ #软件安装路径 mkdir -p /export/data/ #数据存储路径 mkdir -p /export/software/ #安装包路径
3、hadoop集群安装
上传Hadoop安装包到node130 /export/server,解压缩
进入/export/server/hadoop-3.3.0/etc/hadoop,分别修改如下配置文件:
hadoop-env.sh
#文件最后添加 export JAVA_HOME=/usr/local/jdk1.8.0_202 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
core-site.xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node130:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
hdfs-site.xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node131:9868</value>
</property>
mapred-site.xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MR程序历史服务地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>node130:10020</value> </property> <!-- MR程序历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node130:19888</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property>
yarn-site.xml
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node130</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node130:19888/jobhistory/logs</value>
</property>
<!-- 历史日志保存的时间 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
workers
node130
node131
node132
分发同步hadoop安装包
cd /export/server/ scp -r hadoop-3.3.0 root@node131:$PWD scp -r hadoop-3.3.0 root@node132:$PWD
将hadoop添加到环境变量(3台机器)
vim /etc/profile export HADOOP_HOME=/export/server/hadoop-3.3.0 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile
4、hadoop集群启动
(==首次启动==)格式化namenode(node130执行)
hdfs namenode -format
脚本一键启动
start-dfs.sh start-yarn.sh
WebUI页面
HDFS集群:http://node130:9870/
YARN集群:http://node130:8088/