大数据实战第十九课 - CDH5.16.1集群解读

第一章:上次课回顾

第二章:CDH的正常启动停止顺序

第三章:查看日志案例

第四章:Web界面解读

第五章:CDH上删除和添加服务

第一章:上次课回顾

大数据实战第十八课 - CDH5.16.1离线部署

  • https://blog.csdn.net/zhikanjiani/article/details/92794708

回顾:

  • 阿里云三台机器,hadoop001、hadoop002、hadoop003,hadoop001部署了MySQL、Parcel文件离线源。
    在这里插入图片描述
    场景:生产上有旧环境和新环境,CDH6是有节点限制100个,超过节点限制是付费的;尽量生产上保持一致。

本次课程主要涉及以下几点:

一、正常的启动停止顺序
二、架构图
三、日志查看
四、web界面解读
五、添加删除服务
六、生产上的监控如何做

第二章:CDH的正常启动停止顺序

2.1 CDH的正常启动顺序

第一步:首先需要启动MySQL(元数据库启动):service mysql start,

启动MySQL所犯的低级错误:

1、 cdh集群停止后重新启动,首先启动mysql,查看mysql服务,提示not running,service start mysql,提示报错:
[root@hadoop001 ~]# service mysql status
MySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED]

2、需要切换到mysqladmin用户下启动mysql服务:
[root@hadoop001 ~]# su - mysqladmin
Last login: Tue Sep 24 15:32:51 CST 2019 on pts/1
hadoop001:mysqladmin:/usr/local/mysql:>service mysql status
MySQL is not running, but lock file (/var/lock/subsys/mysql) exists[FAILED]
hadoop001:mysqladmin:/usr/local/mysql:>service mysql start
Starting MySQL..[  OK  ]
hadoop001:mysqladmin:/usr/local/mysql:>service mysql status
MySQL running (5016)[  OK  ]

未先启动MySQL元数据库,而去直接启动Hadoop001节点的server服务会出现报错:

  • 首先是haodoop001节点的server进程启动后会死亡:cloudera-scm-server dead but pid file exists
  • 进入到这个目录:/opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server,然后tail -f 查看近200行日志:tail -200f cloudera-scm-server.log

就开始出现一大段报错:

  • 提示无法连接元数据库信息
Caused by: java.net.ConnectException: Connection refused
Could not obtain connection to query metadata : Connections could not be acquired from the underlying database!

所以:

  • 我们需要先切换到mysqladmin用户中,开启mysql服务:
  • 接着开始第二步的操作:

第二步:首先启动hadoop001节点的server服务,然后hadoop001~hadoop003这三台机器的agent服务都需要启动。

1、 首先启动hadoop001节点的server服务:

  • 进入到如下目录: cd /opt/cloudera-manager/cm-5.16.1/etc/init.d/
  • 启动server服务,./cloudera-scm-server start,这个服务启动好后等待两三分钟。

2、接着启动hadoop001~hadoop003这三台机器的agent服务:

  • 进入到如下目录:cd /opt/cloudera-manager/cm-5.16.1/etc/init.d/
  • 启动agent服务,./cloudera-scm-agent start,等待启动完成。

3、进入到如下目录:/opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server,查看日志文件,看7180端口有没有被成功创建。

注意:是agent服务一启动就去查看;经验值:等待一两分钟。

[root@hadoop001 cloudera-scm-server]# pwd
/opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server
[root@hadoop001 cloudera-scm-server]# ll
total 2452
-rw-r----- 1 root root 2330038 Sep 24 16:04 cloudera-scm-server.log
-rw-r--r-- 1 root root    4264 Sep 24 15:44 cloudera-scm-server.out
-rw-r----- 1 root root  164416 Sep 24 15:44 cmf-server-perf.log
[root@hadoop001 cloudera-scm-server]# tail -F cloudera-scm-server.log

4、web界面的cms服务(5个进程)

5、web界面的大数据集群服务

  • 遇到Canary(金丝雀)的错误直接抑制即可

2.2 CDH的正常停止顺序

对应的停止顺序,和启动顺序相反。

  • J总公司环境升级,机房断电,大数据生产有两套环境;生产在IDC机房中心,J总公司集群环境就要提前关闭,否则集群会产生损坏。

1、可以重命名为自己的集群,也可以看见CDH5.16.1这个版本、包裹文件,例如:kafka需要自己安装
2、在重命名页面上单机stop,集群组件会自己停止
在这里插入图片描述

在这里插入图片描述

3、关闭,先关闭agent端,hadoop001~hadoop003下执行命令:./cloudera-scm-agent stop

4、关闭Hadoop001机器上的server,执行命令:./cloudera-scm-server stop

5、service mysql stop

停止启动顺序相反即可。

如果报错server、agent报错,可以去到如下目录:/opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server 使用tail -200f cloudera-scm-server.log查看日志分析。

注意:在cdh启动过程中,某一步出现error飘红。该怎么去定位?
在CDH中看到Canary(金丝雀)二话不说直接抑制。

CDH启动和停止要熟悉。

2.3 CDH的CM架构图

在这里插入图片描述

1、首先我们部署的是一个server,server我们就部署了一个节点,而hdfs、zookeeper、yarn都是在server的基础上部署的,我们的server服务挂了的话会不会对hdfs有影响,答案是不会有影响;

2、每个节点部署了agent,agent我们是通过web端来做的,cdh官方也可以做HA,但是没有必要;我们部署了每个节点的agent进程,我们通过外部界面Admin Console来做的

3、server中的一些配置是存储在MySQL中;我们配置的是parcel-repo的离线仓库,一共有5个进程(Managemet Service),那我们的server和agent是如何进行通信的(根据RPC协议通信)。

4、server分发配置给对应的agent,agent会对父进程(supervisor)更新,父进程会对hdfs、yarn进行启动生效。

  • 数据库、server进程、agent进程、cms的五个进程服务(收集机器的一些指标CPU、Memory、进程是否异常的状态指标来制成图标)、大数据的一些集群服务

注意:

  • 集群中有多少台机器就部署多少个agent。
  • CDH配置,必须通过web界面去修改,不要直接修改参数配置文件。

jps命令的真真假假,参考博客:

  • 这个pid也有可能是假死状态
  • https://mp.csdn.net/mdeditor/89052847#
[root@hadoop001 cloudera-scm-server]# ps -ef|grep 4967
[root@hadoop001 home]# ps -ef|grep 10303
hdfs     10303  5217  0 15:54 ?        00:00:16 /usr/java/jdk1.8.0_45/bin/java 
-Dproc_datanode -Xmx1000m 
-Dhdfs.audit.logger=INFO,RFAAUDIT 
-Dsecurity.audit.logger=INFO,RFAS 
-Djava.net.preferIPv4Stack=true 
-Dhadoop.log.dir=/var/log/hadoop-hdfs 
-Dhadoop.log.file=hadoop-cmf-hdfs-DATANODE-hadoop001.log.out 
-Dhadoop.home.dir=/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hadoop 
-Dhadoop.id.str=hdfs -Dhadoop.root.logger=INFO,RFA 
-Djava.library.path=/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hadoop/lib/native 
-Dhadoop.policy.file=hadoop-policy.xml 
-Djava.net.preferIPv4Stack=true -server -Xms809500672 -Xmx809500672 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/hdfs_hdfs-DATANODE-21c7cba8c358ddc7ebabf2c2ad010e52_pid10303.hprof -XX:OnOutOfMemoryError=/opt/cloudera-manager/cm-5.16.1/lib64/cmf/service/common/killparent.sh 
-Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.datanode.DataNode
hdfs     10309 10303  0 15:54 ?        00:00:00 python2.7 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/cmf-redactor /opt/cloudera-manager/cm-5.16.1/lib64/cmf/service/hdfs/hdfs.sh datanode
root     16898  2120  0 17:28 pts/0    00:00:00 grep --color=auto 10303

2.4 进程所属的配置

  • 进程所属的配置必须通过web界面修改,在生产上,我们对一个组件服务不了解的话,ps -ef|grep 4967去监听这个端口,去查看输出信息,多少内存,它的日志、library。

1、我们进入到这个目录:

  • cd /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent/process,
  • ls -lrt 根据时间从小到大排序。

注意:44-hdfs-DATANODE这个文件夹

在这里插入图片描述

我们进入到CDH中的hdfs界面,尝试修改参数,保存

在这里插入图片描述

单机左上角回到主页,点击hdfs上的电源按钮进行重启:

在这里插入图片描述

我们修改的参数如下显现,然后重启过时服务

在这里插入图片描述

重新部署的时候选中重新部署客户端配置:

在这里插入图片描述

此时重新回到process目录下,ll -lrt进行查看,发现生成了新的56-hdfs-DATANODE:

在这里插入图片描述

小结:

  • web界面修改每一次重启会生效成一个新的文件夹,我们在旧的文件夹中修改所以是没有用的。

2.5 客户端所属的配置

1、我们进入另外一个目录ll /etc/hadoop/conf,我们在这两个目录下直接修改是生效不了的。

图解:

在这里插入图片描述

  • 未来我们集群肯定是这样的一种状况:比如集群下有三个节点都是DN进程;此时我们有一个新的节点,client想要提交我们的jar包;客户端机器需要有hdfs、yarn的配置文件、Hbase配置文件。

情况一:client是独立的非集群的节点

解决办法:添加一个gateway,gateway就是一个客户端,将hdfs的这些配置部署到我们选中的节点上面;旧的会覆盖,

操作:

  • 点击主界面下的hdfs,点击实例,Add Role Instance,添加一个gateway.

情况二:Client正好是集群的hdfs进程的节点

  • 这种情况是无需部署gateway的。

我们要说到cdh详细某一块的配置,不单单是会搭建环境。

  • gateway是客户端的进程,它只是一个配置文件并且是没有状态的。
    在这里插入图片描述

小结:

  • 假如节点没有这个目录/etc/hadoop/conf,直接添加gateway,任何进程修改配置重启生效,其中一步就是要勾选客户端同时生效。

2.6 使用Dbeaver连接MySQL修改元数据信息

  • 此处我们直接使用Dbeaver去连接mysql,服务器地址为阿里云外网ip,记住在安全组规则中放开3306端口。
    在这里插入图片描述

我们观察到数据库中的这个参数和CDH配置页面的参数是保持一致的。

在这里插入图片描述
在这里插入图片描述

测试直接在cmf.configs中修改参数mapred_reduce_tasks = 3;修改完后,重启yarn服务,等待重启完成后:
在这里插入图片描述

  • 所以如上所示:我们直接操作数据库,保存,也是可以生效的(慎用)。

直接操作数据库的使用场景:

  • 生产上有一套CDH集群环境,公司搬家或者机器搬家,IP网段必须发生变化:
    1、修改我们的agent端 对server端的配置文件 hadoop001来指向

2、server连接mysql的配置文件 hadoop001 换言之,配置好etc/hosts后,所有都是用hostname.

3、修改hosts文件为最新 dbeaver查看也能看到

4、hosts表修改(ip这个字段)

  • select * from cmf.hosts;

阶段小结:

1、讲了架构图,抛出配置要通过网页界面修改,jps进程的真真假假。

2、ps -ef|grep pid可以获取到一些信息;进程配置:直接修改文件夹,重启生效会产生新的文件夹。

3、通过修改数据库,重启CDH界面的方式使其生效。

第三章:查看日志案例

  • J总博客:http://blog.itpub.net/30089851/viewspace-2136372/

3.1 CDH中的角色日志

进入到CDH集群环境下:如何查看yarn的角色日志:

1、回到集群主界面,点击yarn服务,进入yarn后单击instance,单击NodeManager,选中Log Files,选中Role Log File,可以直接Download full log。

  • 通过命令行定位问题可以查看文件大小;这个情况文件可能比较大,日志最多是1个G才会切到下一个日志文件;不建议使用web界面下载日志。

2、日志查看:

  • server:tail -200f /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-server/cloudera-scm-server.log

  • agent:tail -200f /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-agent/cloudera-scm-agent.log

遇到error如何去搜索定位:

1、日志量比较大,下载到windows上,editplus中查看

2、cat cloudera-scm-agent.log|grep -C 10 ERROR

  • 出现error关键字的地方,error的上面5行和下面5行。

3、搜索日志定位:编辑日志中,:/ERROR(全日志下搜索ERROR关键词),点击鼠标中的"N"键,就是到下一个ERROR出现的地方中去。

记不清楚具体日志目录的话可以去到web界面中去寻找:

1、点击Cloudera-Manager,回到主界面 --> 单机Configuration --> Log Directories,比如说要去找hdfs下的DataNode目录,直接进行点击,右侧出现的就是日志目录:

在这里插入图片描述

引申出来的问题:

1、在部署过程中默认一个日志路径,一个日志文件1G,有100个日志文件;我们有一块2T的硬盘;如何把日志文件转移到2T硬盘上。

  • 可以直接修改新目录地址,或者XXXX
  • df -h查看内存分配

如何进行操作?
1、mv移动到新的大磁盘目录
2、ln -s进行软连接,指向以前的
3、校验用户和用户组
在这里插入图片描述

日志高级篇:

  • 这些错误日志类似我们写Java/Scala代码中使用的try、catch异常,遇到异常时捕获到的错误。 后缀是XXX.log
  • XXX.stdout XXX.stderr

我们在生产中的注意事项:

  • 生产上部署好CDH服务后,默认使用的admin/admin密码需要改掉
    在这里插入图片描述
  • 要是其它人员想要访问CDH集群,可以分配一个readonly的账户:
    在这里插入图片描述
  • 生产上不建议使用Kerberos,生产上服务器两种:IDC环境和阿里云服务器,防火墙也分为软件和硬件防火墙;阿里云和AWS集群没使用Kerberos;这玩意儿开了反而更费事,请求都需要去做校验认证。
    在这里插入图片描述

关于CDH集群环境的语言环境:

首先需要更换浏览器的默认语言为英文,重启浏览器后再次访问才是英文环境。

集群环境中的如下界面可以找到当前使用的端口:

在这里插入图片描述

  • 对于CDH集群,我们还需要自己去看的有数据库的设置、磁盘文件的阈值。

3.2 部署集群用到的用户

1、在生产中要么使用root用户、sudo权限无密码的用户去访问:

  • 一般是我们自己的用户,给john配上无密码登录:ldap系统

2、我们在部署完成之后:cat /etc/passwd,CDH默认会给我们创建如下这些用户。

flume:x:512:511:Flume:/var/lib/flume-ng:/bin/false
hdfs:x:511:510:Hadoop HDFS:/var/lib/hadoop-hdfs:/bin/bash
solr:x:510:509:Solr:/var/lib/solr:/sbin/nologin
zookeeper:x:509:508:ZooKeeper:/var/lib/zookeeper:/bin/false

3、比如说未来我们想要修改进程所属的用户,都是在Configuration中修改:

第四章:Web界面解读

4.1 集群主界面解读

1、主界面如下:
在这里插入图片描述
2、Configuration界面(会抛出一些错误),如果不想看见这些告警:

  • cdh给出的这些信息都是些经验值
    在这里插入图片描述
    3、主界面中的ALL Recent Command
    在这里插入图片描述
    4、几张图表:
  • 磁盘突然间300m/s,平时很平稳
    在这里插入图片描述

注意:

  • 生产上只建议一套CM配置一套cluster环境:

4.2 集群上各个按钮含义

  • 点击Cluster MANAGER,点击Hosts,选择All Hosts,查看此图:
    在这里插入图片描述
    在这里插入图片描述

Hosts下的Roles中:

在这里插入图片描述
查看Hosts下的Parcels:
在这里插入图片描述

Diagnostics(诊断)下的信息:

第一张图片:
在这里插入图片描述

  • 看个人喜欢,直接去到机器上去搜,vi命令去搜索

Audits:审计操作

Charts:图表操作

Administration:管理员操作

  • 添加用户中只有只读和所有权限这两种:
    在这里插入图片描述

4.3 如何下架CDH集群上的节点

  • 我们去到Cluster集群服务上删除hadoop003节点,首先停止hdfs服务:
  • 参照如下图删除hadoop003节点
    在这里插入图片描述
    先后删除这几个服务中的hadoop003:
    在这里插入图片描述

回到主界面上观察hadoop003节点:此时暂无服务:
在这里插入图片描述

  • 此时回到CDH主界面中查看:

在这里插入图片描述

删除前需要确认如下信息:
在这里插入图片描述

我们回到cdh阿里云机器上去:

把hadoop003机器上的这个服务关掉:

[root@hadoop init.d]# ./cloudera-scm-agent status
cloudera-scm-agent (pid  4448) is running...
[root@hadoop init.d]# ./cloudera-scm-agent stop
Stopping cloudera-scm-agent:                               [  OK  ]

删除完后就只剩下hadoop001和hadoop002这两个节点了:
在这里插入图片描述

此时重新启动CDH中的一些服务,重启服务肯定是会有问题的,顺带查看从cmf.hosts表格

在这里插入图片描述

此时我们机器格式化以后,重新启动hadoop003上的服务,然后到cdh集群环境上去;

图一:

在这里插入图片描述

图二:

在这里插入图片描述

此时角色都是空的,如何加上机器的进程实例:

在这里插入图片描述

4.4 CDH上块丢失的修复

1、hdfs fsck -felete 删除丢失的副本

2、hdfs debug recoverLease -path / -retries 10 /后跟的是文件目录

第五章:CDH上添加和删除服务

第一种:添加某个大的服务:

1、添加服务:Add Service
在这里插入图片描述
2、第二步主节点和小弟节点:
在这里插入图片描述
3、Hbase目录,默认不动
在这里插入图片描述
4、等他运行完后,下一步完成:
在这里插入图片描述

我们要认识到不可能几次课的学习就和J总一个水平。

5、我们注意到单个集群中的服务都能进行这些操作:
在这里插入图片描述

第二种:我们删除CDH集群中HBase服务中的hadoop003的regionserver节点。

1、先停止这个服务,然后再删除。

如果想要把这个服务要回来怎么进行操作呢?

  • Add Role Instances to HBase
  • 添加完成后重启即可

在这里插入图片描述

注意:

  • service role instance (角色、实例、服务)讲的都是一种东西。
  • 服务添加好后去启动即可。

5.1 CDH上下架hadoop003节点

1、Stop Roles on Hosts Command

2、Remove Hosts from Cluster Command(把这台机器上部署的角色给删除掉)

  • CDH是一个标准化的过程,不用担心哪一步或者某块东西丢失。

5.2 CDH集群上加机器

在这里插入图片描述

  • 自行填写

在这里插入图片描述

5.3 CDH大屏监控

1、我们默认的就四副图片,需要进入到具体服务中查看更多图片

  • 任何都离不开进程和文件数

需求:我们需要把HBase中的这张图表放到首页上去监控。

在这里插入图片描述

2、拷贝SQL语句
在这里插入图片描述

  • 进入到主界面中,点击charts --> Dashboards --> create Dashboard
    在这里插入图片描述
  • 此处是编写SQL语句,编译图表的
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值