集群配置

现在各个服务器的准备工作已经做好了,但是Hadoop之间是没有任何关系的

集群部署规划

1.NameNode和SecondaryNameNode不要安装在同一台服务器,因为都耗内存。

2.ResourceManager也很小号内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

配置文件说明

默认配置文件

自定义配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-size.xml,四个配置文件存放在$HADOOP_HOME(自己安装hadoop的路径)/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

配置集群

1 核心配置文件

配置 core-site.xml

[root@hadoop102 ~]# cd /opt/module/hadoop-3.1.3/etc/hadoop
[root@hadoop102 hadoop]# vim core-size.xml

任务:

1.指定NameNode在哪个服务器上 - hadoop102上

 <!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value> //内部通讯地址
</property>

2.hadoop数据存储在哪个目录下 - /opt/module/hadoop-3.1.3/data

    <!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>

3.配置HDFS网页登录使用的静态用户为root(可以先不配)

  <!-- 配置 HDFS 网页登录使用的静态用户为 ranan -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>ranan</value>
</property>

2 HDFS配置文件

配置 hdfs-site.xml

[ranan@hadoop102 hadoop]$ vim hdfs-site.xml

任务:

1.NameNode Web端访问地址

之前核心配置文件中NameNode地址hdfs://hadoop102:8020相当于是hadoop内部通讯地址,现在NameNode是HDFS需要用户在web界面上访问,不需要操作命令行,即也需要对外暴露一个接口hadoop102:9870

  <!-- NameNode web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>

2.SecondaryNameNode web 端访问地址

 <!-- SecondaryNameNode web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>

3 YARN配置文件

配置yarn-site.xml

[ranan@hadoop102 hadoop]$ vim yarn-site.xml

任务:

1.MR走什么协议,什么方式进行资源调度

   <!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> //shuffle方式进行资源调度
</property>

2.指定ResourceManager服务器 - hadoop103

   <!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>

3.环境变量的继承

处理原因:3.1版本的bug?

<!-- 环境变量的继承 -->
<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>

默认配置文件yarn_defaut.xml中是有默认值

//yarn_defaut.xml中的默认值

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ 

//yarn-site.xml设置的值

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

4 MapReduce配置文件

配置mapred-site.xml

[ranan@hadoop102 hadoop]$ vim mapred-site.xml

任务:

指定MapReduce程序运行在Yarn上,由yarn负责MapReduce程序的资源调度。

  <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>//默认是local
</property>

5 分发集群配置

hadoop102的配置文件配置完成了,需要将配置文件分发给hadoop103、hadoop104

(之前是放在/root/bin/xsync 这里拷贝在了/home/ranan/bin下)

//ranan身份使用命令权限不够,加入sudo以root的权限进行分发
[ranan@hadoop102 bin]$ sudo ./xsync /opt/module/hadoop-3.1.3/etc/hadoop/

群起集群

刚才已经把集群都配置完毕了,现在需要启动集群

1 配置workers

集群上有几个节点就配置几个主机名称

[ranan@hadoop102 bin]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

同步所有节点配置文件

[leokadia@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc

分发配置,将三台节点配置完毕,回到hadoop家目录,准备启动集群

2 启动集群

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(相当于新插入的硬盘)

注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

[ranan@hadoop102 hadoop-3.1.3]$ hdfs namenode -format

初始化完毕后,源路径多了两个目录data、logs

1 启动集群

[ranan@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

发现hadoop103创建logs的权限不够,是root用户的,那么修改成ranan就行了。修改万完成后重新运行启动集群命令

[ranan@hadoop103 module]$ sudo chown -R ranan:ranan /opt/module/hadoop-3.1.3/

2 检查是否和规划一致

集群部署规划

使用jps查看每台虚拟机的真实情况

hadoop102

hadoop103

hadoop104

启动完成后,HDFS还提供了Web页面:http://hadoop102:9870/

3 在配置了 ResourceManager 的节点 (hadoop103 )启动 YARN

上传数据不牵扯yarn,牵扯到MapReduce才会启动YARN

[ranan@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

启动完成后YARN也提供了Web页面,查看任务的运行情况:http://hadoop103:8088

总结

HDFS的启动[ranan@hadoop103 hadoop-3.1.3]$ sbin/start-dfs.sh

在配置了 ResourceManager 的节点 (hadoop103 )启动 YARN[ranan@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

3 集群基本测试

上传文件到集群

上传小文件

[ranan@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /wcinput
[ranan@hadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/word.txt /wcinput



上传大文件

[ranan@hadoop102 hadoop-3.1.3]$ hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /

这里面实际只存储了一个链接,实际存储的数据在DataNode

查看数据真实存储路径

真实存储的路径

[ranan@hadoop102 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1612211493-192.168.10.102-1624417910221/current/finalized/subdir0/subdir0

查看word.txt

cat blk_1073741825

查看jdk

把blk_1073741826、blk_1073741827文件输出到tmp.tar.gz。再把压缩包解压到当前路径。

[ranan@hadoop102 subdir0]$ cat blk_1073741826>>tmp.tar.gz
[ranan@hadoop102 subdir0]$ cat blk_1073741827>>tmp.tar.gz
[ranan@hadoop102 subdir0]$ tar -zxvf tmp.tar.gz //解压到当前路径
![image](https://img2020.cnblogs.com/blog/1345685/202106/1345685-20210623161006102-802042742.png)

Hadoop高可用,任何一个服务器挂了还有两份副本,每台服务器都是一个NameNode

下载

[ranan@hadoop104 subdir0]# hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./

执行wordcount程序

HDFS方式运行,输入输出的路径也需要是集群的路径

[ranan@hadoop102 subdir0]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput

Web端查看YARN的ResourceManager发现了刚刚的任务

点击history报错,因为我们还没有配置history服务器,如果关闭页面,刚刚任务的运行情况就没了。

所以是需要配置history服务器的,查看任务的运行情况。

配置历史服务器

1 配置mapred-site.xml

先去配置信息存放的文件/opt/module/hadoop-3.1.3/etc/hadoop

[ranan@hadoop102 hadoop]$ vim mapred-site.xml

1.历史服务器配置在哪台服务器上? - hadoop102:10020

<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value> //内部通讯端口
</property>

2.历史服务对外暴露的接口,Web页面。

<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>

2 分发mapred-site.xml

[ranan@hadoop102 bin]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml

3 在hadoop102启动历史服务器

先重启yarn,再启动历史服务器

[ranan@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

[ranan@hadoop102 hadoop]$ mapred --daemon start historyserver

4 测试

[ranan@hadoop103 hadoop-3.1.3]$ hadoop fs -mkdir /input
[ranan@hadoop103 hadoop-3.1.3]$ hadoop fs -put wcinput/word.txt /input
[ranan@hadoop103 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input output

点击History

页面跳转到历史服务器暴露的web页面

配置日志的聚集

logs点击后无法显示正常功能

日志聚集的概念

应用运行完成以后,将程序运行的日志信息上传到HDFS系统上。可以方便的查看程序运行详情,方便开发调试。

开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和HistoryServer

1 配置yarn-site.xml

[ranan@hadoop102 hadoop]$ vim yarn-site.xml

设置yarn.log开启

历史服务器是hadoop102:19888,为了方便历史服务器查看。logs聚集在hadoop102上http://hadoop102:19888/jobhistory/logs

设置日志保留时间为7天

<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value> //默认值是false
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

2 分发yarn-site.xml

[ranan@hadoop102 hadoop]$ xsync yarn-site.xml

3 重启yarn对应的服务

因为修改了yarn的配置,所以需要重新启动yarn

关闭historyServer

[ranan@hadoop102 hadoop-3.1.3]$ mapred --daemon stop historyserver

关闭NodeManager、ResourceManager

[ranan@hadoop102 hadoop-3.1.3]$ sbin/stop-yarn.sh

重启

[ranan@hadoop102 hadoop-3.1.3]$ sbin/start-yarn.sh
[ranan@hadoop102 hadoop-3.1.3]$ mapred --daemon start historyserver

后面执行的任务就可以查看logs了。

4 测试

重新执行命令

[ranan@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /ourput2

最新文章

  1. 使用ndk编译c可执行程序
  2. 20145212 实验三《敏捷开发与XP实践》
  3. CICS中设置程序常驻内存
  4. nova 配置文件
  5. Python学习之字符串函数
  6. Struts文件上传
  7. Django-基础之web框架
  8. Oracle的nvl
  9. java EE 、java SE 、java ME的区别
  10. DateUtil日期工具类
  11. 利用Python进行数据处理1——学会使用NumPy
  12. 8. American Friendship 美国式的友谊
  13. Python内置类型(4)--数值
  14. 7、Python-引用传递与值传递
  15. [dpdk] dpdk --lcores参数
  16. css动画和js动画的差异
  17. UVaLive 4597 Inspection (网络流,最小流)
  18. maven下@override标签失效
  19. [arc072F]Dam-[单调队列]
  20. ueditor和thinkphp框架整合修改版

热门文章

  1. 数列极限计算中运用皮亚诺Taylor展开巧解
  2. hdu 5100 Chessboard (额,,,,,就叫它趣味数学题吧)
  3. linux查看和修改时间
  4. 从零搭建vsftpd
  5. logstash的filter之grok
  6. [loj3524]钥匙
  7. [atAGC048F]01 Record
  8. vue 3 学习笔记 (八)——provide 和 inject 用法及原理
  9. 明明pip安装python的模块了,pycharm还是找不到的解决方案
  10. 8.5 Ingress实现基于域名的多虚拟主机、URL转发、及多域名https实现等案例