【CM】Cloudera Manager 平台搭建及大数据服务部署

1、搭建准备(1)配置ip、hostname、主机映射、用户权限管理(2)禁用ipv6、selinux和关闭防火墙(3)在所有机器上卸载OpenJDK,安装OracleJDK(4)配置SSH免密码登录(5)集群系统的时间同步(6)在所有服务器上设置用户能打开的文件最大数量、进程最大数据、能使用的内存量(7)安装mysql数据库2、CM平台搭建(1)在所有服务器上安装第三方依赖yum-yinstal...

【CM】Cloudera Manager 平台搭建及大数据服务部署
1、搭建准备

(1)配置ip、hostname、主机映射、用户权限管理
(2)禁用ipv6、selinux 和关闭防火墙
(3)在所有机器上卸载OpenJDK,安装Oracle JDK
(4)配置SSH免密码登录
(5)集群系统的时间同步
(6)在所有服务器上设置用户能打开的文件最大数量、进程最大数据、能使用的内存量
(7)安装mysql数据库

2、CM 平台搭建

(1)在所有服务器上安装第三方依赖

yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb

(2)下载安装包
Cloudera Manager下载地址:http://archive.cloudera.com/cm5/cm/5/
下载好压缩包cloudera-manager-el6-cm5.10.2_x86_64.tar.gz,上传到/opt/softwares文件夹下。
(3)解压安装包
在server主节点上创建一个CM的解压目录:# mkdir -p /opt/cloudera-manager
解压安装包:

# tar -zxf /opt/softwares/cloudera-manager-el6-cm5.10.2_x86_64.tar.gz -C /opt/cloudera-manager

在解压路径下出现两个子目录cloudera和cm-5.10.2,其中/opt/cloudera-manager/cm-5.10.2存放CM框架本身的配置、依赖库、启动脚本等文件。
(4)在server主节点上修改agent配置
# vi /opt/cloudera-manager/cm-5.10.2/etc/cloudera-scm-agent/config.ini

# Hostname of the CM server.server_host=beifeng01.com  //指定server主节点# Port that the CM server is listening on.server_port=7182  //指定通信端口

(5)拷贝CM文件夹给其他服务器

# scp -r /opt/cloudera-manager/ beifeng02.com:/opt/# scp -r /opt/cloudera-manager/ beifeng03.com:/opt/

(6)在agnet所有服务器节点创建cloudera Manager用户 cloudera-scm

# useradd --system --home=/opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm 详解:useradd --system  表示创建的是系统用户--home=/opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-server  指定用户主目录路径--no-create-home不创建用户主目录--shell=/bin/false  不作为一个登陆用户--comment "Cloudera SCM User"cloudera-scm  用户名

验证:# cat /etc/passwd | grep cloudera-scm
(7)配置CM数据库的权限
登陆主节点msyql:# mysql -uroot -p123456
在主节点,也即mysql安装的机器添加一个temp用户并赋予相关权限

mysql> grant all privileges on *.*  to 'temp'@'%' identified by 'temp' with grant option ;mysql> grant all privileges on *.* to 'temp'@'beifeng01.com' identified by 'temp' with grant option;mysql> flush privileges ;

验证:

mysql> use  mysql ;mysql> select host ,user from user ;

在主节点上:

# cd /opt/cloudera-manager/cm-5.10.2/share/cmf/schema

在schema目录下执行脚本文件scm_prepare_database.sh

# ./scm_prepare_database.sh mysql -h beifeng01.com -utemp -ptemp --scm-host beifeng01.com scm scm scm

出现异常:

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

解决办法:在/usr/share/java目录放入 mysql的驱动jar包,并且要求将jar包名称改为“mysql-connector-java.jar”

cp /opt/softwares/mysql-connector-java.jar /usr/share/java

下面两个可以不执行了:

# cp mysql-connector-java-5.1.26-bin.jar /usr/share/java# mv mysql-connector-java-5.1.26-bin.jar mysql-connector-java.jar

SCM数据库配置成功显示:

All done, your SCM database is configured correctly!

(8)将CDH源放到Cloudera Manager 主节点服务器上
CDH源:hadoop集群(hadoop、flume、hbase等等)的安装文件.
在server主节点上创建CDH源存放目录,注意:目录名称不能变:

# mkdir -p /opt/cloudera/parcel-repo

在agent主机节点上创建目录:

# mkdir -p /opt/cloudera/parcels 

移动CDH源到parcel-repo目录下:

# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel* /opt/cloudera/parcel-repo/  

移动CDH源,去掉校验码文件结尾的1:

# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha 

更改parcel目录的所有人:
server节点:

# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/

agent节点(所有agent节点):

# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcels 

(9)启动CM进程
server进程:
进入CM的进程启动脚本目录:

# cd /opt/cloudera-manager/cm-5.10.2/etc/init.d

启动命令,注意:至少需要8G内存:

# ./cloudera-scm-server  start 

进入server主进程的log日志目录:

# cd /opt/cloudera-manager/cm-5.10.2/log/cloudera-scm-server

查看server主进程的log日志:

# tail -f cloudera-scm-server.log

启动agent从节点进程(在所有agent节点中启动):

# cd /opt/cloudera-manager/cm-5.10.2/etc/init.d/# ./cloudera-scm-agent start

jps命令看不到agent进程,因为是agent进程是Python语言维护。

[root@bigdata02 ~]# jps[root@bigdata02 ~]# ps -ef | grep agentgdm 2013  1961  0 Feb24 ?  00:00:00 /usr/libexec/polkit-gnome-authentication-agent-1root  19512  1  3 10:26 ?  00:00:05 /opt/cloudera-manager/cm-5.10.2/lib64/cmf/agent/build/env/bin/python /opt/cloudera-manager/cm-5.10.2/lib64/cmf/agent/src/cmf/agent.py --package_dir /opt/cloudera-manager/cm-5.10.2/lib64/cmf/service --agent_dir /opt/cloudera-manager/cm-5.10.2/run/cloudera-scm-agent --lib_dir /opt/cloudera-manager/cm-5.10.2/lib/cloudera-scm-agent --logfile /opt/cloudera-manager/cm-5.10.2/log/cloudera-scm-agent/cloudera-scm-agent.log

CM的jetty服务器操作界面的访问端口为7180,操作界面地址:http://beifeng01.com:7180,登陆用户名:admin,密码:admin。
查看端口占用情况:# netstat -tlnup
查看Windows系统配置:

C:\Windows\System32\drivers\etc192.168.84.131  beifeng01.com 192.168.84.132  beifeng02.com 192.168.84.133  beifeng03.com 

启动好后 ,netstat -tlnup | grep 7180命令查看是否正常开启了7180页面访问端口。
通过浏览器访问:http://beifeng01.com:7180
或者:http://beifeng01.com:7180/cmf/express-wizard/resume
登录用户名:admin,登录密码:admin。
报错:

useradd: cannot lock /etc/group; try again later.useradd: cannot lock /etc/gshadow ; try again later.

解决方法:删除group.lock,删除gshadow.lock。
(10)检查主机的正确性
【报错异常】
Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 60。
【解决方法】
当前设置查看:# more /proc/sys/vm/swappiness
三台agent主机都执行(不使用磁盘作为内存交换区):# echo 10 > /proc/sys/vm/swappiness
【报错异常】
已启用透明大页面压缩,可能会导致重大性能问题。请运行echo never > /sys/kernel/mm/transparent_hugepage/defrag和echo never > /sys/kernel/mm/transparent_hugepage/enabled以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始化脚本中,以便在系统重启时予以设置。以下主机将受到影响:…
【解决方法】
所有机器执行:

# echo never > /sys/kernel/mm/transparent_hugepage/defrag# echo never > /sys/kernel/mm/transparent_hugepage/enabled

编辑/etc/rc.local文件:

# vi /etc/rc.local

添加上面的echo命令。

3、在CM上搭建服务规划机器NameNodeDataNodeResourceManagerNodeManagerJobHistoryServerNameNode HA热备ResourceManager HA热备JournalNodeZookeeperHiveServer2MasterRegionServerSqoopFlumeOozieHueMySQL
beifeng01.comokokokok   okokokokok ok  ok
beifeng02.com ok okokokokokok  okokok ok 
beifeng03.com ok ok   okok  ok okok  
4、在CM上部署服务

(1)HDFS
NameNode所在机器:beifeng01.com
DataNode所在机器:beifeng[01-03].com
数据库所在机器:beifeng01.com
数据库名称:scm
登录用户:temp
登录密码:temp
群集设置:采取默认,有个默认节点目录
每次修改配置后,会出现过期配置,重启就好了
内存调度阀值:默认是0.8,可以修改为1
Java 堆栈大小:修改为默认值1
(2)YARN (MR2 Included)
ResourceManager所在机器:beifeng01.com
NodeManager所在机器:beifeng[01-03].com
JobHistoryServer所在机器:beifeng02.com
测试:
1)创建目录:hdfs dfs -mkdir /input

mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

解决办法:

  • 修改配置:在hdfs的配置里有个权限检查的配置
    hdfs -> 配置 -> 检查hdfs权限 -> 把√去掉 -> 重启服务
  • 声明HADOOP_USER_NAME为hdfs
  • export HADOOP_USER_NAME=hdfs

    2)写一个文件:vi input.txt 上传到/input

    hdfs dfs -put input.txt /input

    3)跑个wordcount程序:

    yarn jar /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/jars/hadoop-mapreduce-examples-2.6.0-cdh5.10.2.jar wordcount /input /output

    4)修改reduce的个数
    在yarn的配置里面:搜索mapreduce.job.reduces,默认为40,重置为1
    重新部署客户端配置:重启
    (3)ZooKeeper
    ZooKeeper所在机器:三台机器都搭建ZooKeeper服务
    警告:Cloudera Management Service: Service Monitor 的最大非Java 内存
    修改为默认值,然后重启服务
    (4)NameNode和ResourceManager的HA配置
    HA的集群名称:nameservice1
    在hdfs右边有个操作 -> 启用HA -> nameservice1
    NameNode HA热备所在机器:beifeng02.com
    JournalNode所在机器:beifeng[01-03].com
    给出JournalNode的存储路径:/dfs/jn
    对当前 NameNode 的名称目录进行格式化。如果名称目录不为空,此操作将失败
    测试:kill掉活动的NameNode
    在yarn右边有个操作 -> 启用HA -> ResourceManager HA热备所在机器:beifeng02.com
    (5)Hive
    HiveServer2所在机器:beifeng01.com
    创建create database hive; 用户名:root 密码:root
    链接数据库:数据库hive
    测试:show databases;
    显示列名和库名:hive -> 配置 -> hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)-> 加入下面的配置:

    <property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property>
    $ bin/hive --service hiveserver2 &$ bin/beelinebeeline> helpbeeline> !connect jdbc:hive2://beifeng01.com:10000 root 123456  --Linux用户名、密码> show databases;> use mydb;> show tables;> select * from emp;> !quit

    (6)HBase
    Master所在机器:beifeng01.com
    RegionServer所在机器:beifeng[01-03].com
    重启集群,启动HBase。
    (7)Sqoop
    Sqoop所在机器:beifeng02.com
    测试:root或者temp登录

    #sqoop list-databases --connect jdbc:mysql://beifeng01.com:3306 --username root --password 123456

    报错:

    java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.DriverAccess denied for user 'root'@'beifeng02.com' (using password: YES)

    解决方法:

    scp -r mysql-connector-java.jar beifeng02.com:/usr/share/java/scp -r mysql-connector-java.jar beifeng03.com:/usr/share/java/

    如果没有java目录,就创建该java目录。
    在beifeng01.com上进行mysql授权:

    grant all privileges on *.* to 'root'@'beifeng02.com' identified by 'root' with grant option;grant all privileges on *.* to 'root'@'beifeng03.com' identified by 'root' with grant option;

    (8)Flume
    Flume所在机器:beifeng[01-03].com,选择依赖关系多的选项。
    1)Flume Agent包括三个组件source、channel、sink,一般Flume在正式使用时需要自己编写好flume.conf文件。通常使用的组件搭配有:exec source、memory channel、hdfs sink
    2)Flume配置安装
    角色分配给三台机器beifeng[01-03].com,也即三台机器公用一个agent
    3)flume.conf详细配置
    在flume“配置”中的“Agent Default Group”,设置代理名称为 “a1”,配置文件用如下配置替换:

    a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = execa1.sources.r1.command = tail -F /opt/cloudera-manager/cm-5.3.6/log/cloudera-scm-agent/supervisord.loga1.sources.r1.channels = c1# Describe the sinka1.sinks.k1.type = hdfsa1.sinks.k1.hdfs.path = hdfs://nameservice1/cmagent/logs/%Y-%m-%d# default:FlumeDataa1.sinks.k1.hdfs.filePrefix = cmagent-# useLocalTimeStamp set truea1.sinks.k1.hdfs.useLocalTimeStamp = truea1.sinks.k1.hdfs.rollInterval = 0a1.sinks.k1.hdfs.rollCount = 0# block 128 120 125a1.sinks.k1.hdfs.rollSize = 10240a1.sinks.k1.hdfs.fileType = DataStream#a1.sinks.k1.hdfs.round = true#a1.sinks.k1.hdfs.roundValue = 10#a1.sinks.k1.hdfs.roundUnit = minute# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1

    4)启动flume,查看其中一台的日志信息
    5)flume 会以flume用户访问hdfs,报错如下:

    org.apache.hadoop.security.AccessControlException: Permission denied: user=flume, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

    解决办法:
    在hdfs上手动将cmagent/logs创建出来,更改该目录的所属者为flume:

    ~]# hdfs dfs -mkdir /cmagent~]# export HADOOP_USER_NAME=hdfs~]# hdfs dfs -chown -R flume /cmagent

    6)一个集群中可以添加配置多个flume服务,收集不同数据源
    (9)Oozie
    Oozie所在机器:beifeng03.com,选择依赖关系多的选项
    1)在Oozie Server进程所在的服务器上:

    # scp ext-2.2.zip beifeng03.com:/var/lib/oozie# cd /var/lib/oozie

    解压zip包到Oozie Server进程所在的服务器上的/var/lib/oozie:

    # unzip ext-2.2.zip

    如果解压失败没有unzip,则yum源安装unzip:yum -y install unzip
    修改oozie-site.xml的配置文件,设置时区:

    #  cd /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/etc/oozie/conf.dist

    把下面配置加入oozie-site.xml或者在CM中找到Oozie的配置高级,将下面配置贴进去:

    <property><name>oozie.processing.timezone</name><value>GMT 0800</value></property>

    cd /opt/cloudera/parcels/CDH/lib/oozie/webapps/oozie,修改Oozie的Web端代码:

    vi oozie-console.js177行:function getTimeZone() {Ext.state.Manager.setProvider(new Ext.state.CookieProvider());return Ext.state.Manager.get("TimezoneId","GMT 0800");}2635行:var currentTimezone = Ext.state.Manager.get("TimezoneId","GMT 0800");

    (10)Hue
    Hue所在机器:beifeng02.com, 选择依赖关系多的选项。

    源文地址:https://www.guoxiongfei.cn/csdn/7673.html