Cloudera Manager环境搭建【二】

2022-11-28 20:18:08 浏览数 (1)

文章目录

  • CM环境搭建
    • 1. 目标
    • 2. Linux配置优化
      • 2.1 Swappiness虚拟内存
      • 2.2 关闭内存动态分配(内存页*透明化*)
      • 2.3 最大文件句柄
      • 2.4 最大派生进程数
      • 2.5 TCP Socket*端口数
      • 2.6 缩减Socket闲置*时间
      • 2.7 提高IO性能
    • 3. 安装Server和Agent
      • 3.1 安装Server服务
      • 3.2 设置元数据库为mysql
      • 3.3 启动server服务进程(查看7180端口)
      • 3.4 配置本地parcel包
      • 3.5 开始安装
      • 3.6 swappiness和透明化
      • 3.7 继续创建集群
      • 3.8 添加第二台主机
    • 4. 添加监控Service
      • 4.0.1 功能
      • 4.0.2 安装
  • 5. 添加大数据组件
    • 5.1 添加HDFS服务
    • 5.2 添加Yarn服务
    • 5.3 添加Zookeeper服务
    • 5.4 添加Hive服务
    • 5.5 添加Oozie服务
    • 5.6 添加Sqoop服务
    • 5.7 添加Hue服务
  • 6. 添加新服务器

CM环境搭建

1. 目标

进行Linux优化配置

安装Cloudera Manager的Server和Agent

安装Cloudera Manager监控Service

使用CM安装大数据组件

使用CM添加新服务器

2. Linux配置优化

2.1 Swappiness虚拟内存

swappiness是Linux的一个内核参数,控制系统在使用swap虚拟内存时,内存使用的相对权重。

swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap虚拟内存分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间。推荐设置为10。根据服务器硬件配置会有变化。

临时生效:

sysctl -w vm.swappiness=10

永久生效:

echo “vm.swappiness=10” >> /etc/sysctl.conf

2.2 关闭内存动态分配(内存页透明化

自CentOS6版本开始引入了Transparent Huge Pages(THP透明的巨大的页面),从CentOS7版本开始,该特性默认就会启用。

Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变。

因为Transparent HugePages是在运行时动态分配内存的,所以会带来在运行时内存分配延误。

因此,尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP(比如说Cloudera、ORACLE、MariaDB、MongoDB等),否则可能会导致性能出现下降。

临时生效:

echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled

永久生效:

echo “echo never > /sys/kernel/mm/transparent_hugepage/defrag” >> /etc/rc.localecho “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local

2.3 最大文件句柄

Maximum File Handles,大数据服务可能会打开非常大量的文件句柄。通过编辑 /etc/security/limits.conf 来增加限制,添加类似的内容:

  • hard nofile 50000* soft nofile 50000

第一行是指定用户,前面的 * 代表所有用户。

2.4 最大派生进程数

Maximum Forked Processes,配置允许生成大量的线程。要增加Linux允许的数量,编辑 /etc/security/limits.conf

  • hard nproc 10000* soft nproc 10000

发行版Linux可能需要通过添加来编辑 /etc/security/limits.d/20-nproc.conf

  • soft nproc 10000

2.5 TCP Socket*端口数

增加可用的TCP套接字端口数(Increase the number of TCP socket ports available),如果你的流程会在很短的时间内创建并拆除大量socket,这一点尤为重要。

sudo sysctl -w net.ipv4.ip_local_port_range =“10000 65000”

2.6 缩减Socket闲置*时间

socket连接闲置太长时间会影响并发量,设置socket在保持TIMED_WAIT状态的时间,能够快速创建和销毁新socket。

sudo sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait =“1”

2.7 提高IO性能

默认的方式下linux会把文件访问的时间atime做记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间;这在绝大部分的场合都是没有必要的。

因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。

如果遇到机器IO负载高或是CPU WAIT高的情况,可以尝试使用noatime和nodiratime禁止记录最近一次访问时间戳。你会发现吞吐量有惊人的提高。

比如我要在根文件系统使用noatime,可以编辑/etc/fstab文件,如下:

/dev/mapper/centos-root / xfs defaults,noatime 0 0UUID=47f23406-2cda-4601-93b6-09030b30e2dd /boot xfs defaults 0 0/dev/mapper/centos-swap swap swap defaults 0 0

修改后重新挂载

mount -o remount /或者mount -o remount /boot

3. 安装Server和Agent

3.1 安装Server服务

此步骤仅在第一台服务器安装。

yum install -y oracle-j2sdk1.8-1.8.0 update181-1.x86_64yum install -y enterprise-debuginfo-6.2.1-1426065.el7.x86_64yum install -y cloudera-manager-server-6.2.1-1426065.el7.x86_64yum install -y cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64

注意:如果在yum源中添加了新的包时:

1.需要删除之前的repodata文件后,重新生成;

2.重启httpd服务

3.清除yum缓存 yum clean all

3.2 设置元数据库为mysql

设置元数据库为mysql–前提是安装ClouderaManager Server服务

/opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm root 123456

旧版本CM:

/usr/share/cmf/schema/scm_prepare_database.sh -h localhost mysql scm root 123456

如果提示ERROR JDBC Driver com.mysql.jdbc.Driver not found,需要上传mysql驱动包jar到/opt/cloudera/cm/lib目录下。

Mysql驱动在资料中已提供:

查看:cat /etc/cloudera-scm-server/db.properties

3.3 启动server服务进程(查看7180端口)

启动:

systemctl start cloudera-scm-server

查看server启动日志:

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

日志配置信息:/etc/cloudera-scm-server/log4j.properties

Agent日志目录:/var/log/cloudera-scm-agent/cloudera-scm-agent.log

查看启动状态:

#查看启动状态systemctl status cloudera-scm-server

#查看端口号是否已经运行netstat -an | grep 7180

3.4 配置本地parcel包

注意:必须要在数据库初始化后,将parcel文件放置到/opt/cloudera/parcel-repo目录中。

  1. 上传cdh6的parcel等文件到opt/cloudera/parcel-repo
  2. 重命名密钥文件名

mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha

资料文件目录:

3.5 开始安装

访问Server:http://hadoop01:7180/cmf/login

账号密码均为admin

登录后,先不要安装,先返回首页:

先设置Parcel 更新频率:

修改为1分钟:

如果目录下已经有了后缀为torrent的文件,则证明识别成功:

然后重新进入添加集群页面:

下一步:

选择免费版本的ClouderaManager:

设置集群名称:

选择安装的服务器:

选择存储库:

运行安装:

测试网络和主机:

查看检查结果:

如果有问题,就需要修复后再继续

图中显示的问题,就是下一步要处理的,swappiness和透明化。

3.6 swappiness和透明化

临时生效:

sysctl -w vm.swappiness=10echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled

永久生效:

echo “vm.swappiness=10” >> /etc/sysctl.confecho “echo never > /sys/kernel/mm/transparent_hugepage/defrag” >> /etc/rc.localecho “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local

3.7 继续创建集群

然后回到刚才的安装页面,选择继续创建集群:

安装成功,返回首页查看主机:

3.8 添加第二台主机

添加第二台服务器节点:

运行检查后,对hadoop02节点也要执行swappiness和透明化操作。然后继续下一步:

添加新节点完成:

4. 添加监控Service

4.0.1 功能

Cloudera Management Service可作为一组角色实施各种监控管理

1.Activity Monitor:收集关于MapReduce服务运行的活动的信息。默认情况下不添加此角色,实际生产环境也是不需要的。

2.Host Monitor:收集有关主机的运行状况和指标信息。

3.Service Monitor:从YARN和Impala服务中收集关于服务和活动信息的健康和度量信息。

4.Event Server:聚合组件的事件并将其用于警报和搜索。

5.Alert Publisher :为特定类型的事件生成和提供警报,实际情况下用的也少。

4.0.2 安装
  1. 开始添加
  1. 自定义角色分配服务器
  1. 分配权限后继续

mkdir -p /var/lib/cloudera-host-monitormkdir /var/lib/cloudera-service-monitorchown -R cloudera-scm:cloudera-scm /var/lib/cloudera-host-monitorchown -R cloudera-scm:cloudera-scm /var/lib/cloudera-service-monitor/

  1. 开始安装
  1. 可以看到报警信息
  1. 经过一段时间后,可以看到这段时间内的服务器监控信息

5. 添加大数据组件

5.1 添加HDFS服务

  1. 点击添加
  1. 选择HDFS
  1. 自定义角色分配服务器
  1. 审核更改使用默认配置下一步

  1. 运行安装命令
  1. 等待完全启动

安装以后,会有一些异常信息,这是还没有完全启动,需要等待一段时间。

  1. 抑制无关紧要的警告信息
  1. HDFS配置项dfs.permissions,改为false,否则会因为权限问题不能再hdfs中创建目录和文件。

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=admin, access=WRITE, inode=“/user”:hdfs:supergroup:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:400)

设置后需要重启服务

  1. 关闭safemode模型

#查看当前的safemode状态hdfs dfsadmin -safemode get#关闭safemodehdfs dfsadmin -safemode leave

  1. 查看Hadoop WebUI
  1. 测试HDFS

hdfs dfs -mkdir /test

5.2 添加Yarn服务

  1. 添加服务
  1. 角色分配服务器
  1. 使用默认配置
  1. 运行安装命令
  1. 对于无用的警告可以压制掉
  1. 测试

#新建一个文本文件vim testinput.txt

#创建HDFS目录hadoop fs -mkdir /input

#上传文件到HDFShadoop fs -put /home/hadoop/data/testiinput.txt /input

#运行WordCountyarn jar /opt/cloudera/parcels/CDH/jars/hadoop-mapreduce-examples-3.0.0-cdh6.2.1.jar wordcount /input /output

#执行结束后,查看输出目录hadoop fs -ls /output

#查看输出结果hadoop fs -cat /output/part-r-00000

5.3 添加Zookeeper服务

  1. 添加
  1. 自定义角色服务器
  1. 如果有异常报警,请等待一段时间完全启动后再刷新看看

5.4 添加Hive服务

  1. 添加服务
  1. 选择依赖
  1. 自定义角色分配服务
  1. 设置元数据库
  1. 点击测试连接

提示ERROR JDBC Driver com.mysql.jdbc.Driver not found.

需要上传mysql驱动包jar到/opt/cloudera/cm/lib目录下。

  1. 继续测试

提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。

需要先创建数据库:

mysql -uroot -pcreate database hive;

  1. 测试通过
  1. 审核更改
  1. 运行命令

发现报错

点击stderr查看报错详情

提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

之前是CM找不到驱动,现在是Hive找不到mysql驱动:

cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/hive/lib/

  1. 完成安装
  1. 查看HiveServer2 Web UI
  1. 验证Hive是否可用

hiveselect from_unixtime(1583781807, ‘yyyy-MM-dd’);

5.5 添加Oozie服务

  1. 添加服务
  1. 选择依赖
  1. 分配服务器
  1. 设置元数据库

先在mysql中创建数据库

mysql -uroot -pcreate database oozie;

然后配置并测试连接:

  1. 运行安装命令

提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

需要复制驱动jar:

cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/oozie/lib/cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /var/lib/oozie/

  1. 安装成功

5.6 添加Sqoop服务

  1. 添加服务

虽然现在已经有sqoop2.x版本,但还是推荐大家使用1.x。

  1. 角色分配服务器
  1. 安装完成
  1. 测试sqoop

4.1 创建mysql测试库和表

mysql -uroot -pcreate schema test;create table test( id bigint auto_increment, name varchar(127) not null, age bigint null, class varchar(255) null, primary key (id));

4.2 创建文本文件并上传到HDFS

#创建文件vim text.txtleo|12|class1leo1|13|class2leo2|14|class3leo3|15|class4leo4|16|class5leo5|17|class6

#上传到HDFShdfs dfs -mkdir -p /data/test/hdfs dfs -put ./test.txt /data/test/

#查看是否上传成功hdfs dfs -cat /data/test/*

4.3 执行sqoop命令

sqoop export --connect jdbc:mysql://hadoop01:3306/test --username root --password 123456 --table test --columns ‘name,age,class’ --export-dir /data/test --input-fields-terminated-by ‘|’ --num-mappers 1

4.4 发现报错,缺少驱动

复制驱动,然后重试sqoop脚本:

cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/sqoop/lib/

4.4 查看mysql表是否有数据

5.7 添加Hue服务

  1. 添加服务
  1. 选择依赖
  1. 分配服务器
  1. 创建元数据库

mysql -uroot -pcreate database hue default character set utf8 collate utf8_general_ci;

  1. 数据库设置并测试连接
  1. 成功
  1. 访问WEB UI
  1. 成功

6. 添加新服务器

  1. 启动新的服务器
  1. 配置host 和 ip

vim /etc/hosts192.168.52.150 hadoop01192.168.52.151 hadoop02192.168.52.152 hadoop03192.168.52.153 hadoop04

  1. 安装依赖包

yum install -y cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs bind-utils libxslt fuseyum install -y /lib/lsb/init-functions createrepo deltarpm python-deltarpmyum install -y mod_ssl openssl-devel python-psycopg2 MySQL-python

  1. 关闭防火墙

查看防火墙状态: systemctl status firewalld.service

绿的running表示防火墙开启

执行关闭命令: systemctl stop firewalld.service

再次执行查看防火墙命令:systemctl status firewalld.service

执行开机禁用防火墙自启命令 : systemctl disable firewalld.service

  1. 关闭selinux

#临时生效setenforce 0 #永久生效#将SELINUX=enforcing改为SELINUX=disabledvim /etc/selinux/config

#在配置文件中第一次设置时需要重启服务器reboot

  1. 确保第一台主机的httpd服务正常使用

#查看当前状态systemctl status httpd.service

#启动systemctl start httpd.service

确保访问正常

  1. 配置本地yum源

cd /etc/yum.repos.d/vim cloudera-manager.repo[cloudera-manager]name=Cloudera Managerbaseurl=http://hadoop01/cm6/6.2.1/redhat7/yum/gpgcheck=0enabled=1yum clean all yum list | grep cloudera

  1. 创建cloudera-scm用户

useradd cloudera-scmpasswd cloudera-scmtest123456#免密钥登录echo “cloudera-scm ALL=(root)NOPASSWD:ALL” >> /etc/sudoerssu - cloudera-scmexit

  1. 使用CM添加新主机

9.1 添加新主机

9.2 使用原来的集群

9.3 搜索选择服务器

9.4 选择存储库

9.5 安装JDK

9.6 root登录凭据

9.7 开始安装

  1. 检查主机正确性
  1. 修复监测问题

临时生效:

sysctl -w vm.swappiness=10echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled

永久生效:

echo “vm.swappiness=10” >> /etc/sysctl.confecho “echo never > /sys/kernel/mm/transparent_hugepage/defrag” >> /etc/rc.localecho “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local

然后回到刚才的安装页面,选择继续创建集群:

安装成功,返回首页查看主机:

  1. 针对已安装的不同服务,添加新服务器的角色实例

0 人点赞