【LWei-大数据】CDH内网环境搭建

一、环境配置

操作系统:(Server、Node)Redhat7

内存:(Server)16G、(Node)8G

磁盘空间:(Server)100G、(Node)100G

CDH:6.1

官方安装手册:https://www.cloudera.com/documentation/enterprise/latest/topics/introduction.html

二、安装前配置

1、配置Network Names

(1)设置主机名称

sudo hostnamectl set-hostname foo-1.example.com

(2)编辑/etc/hosts中的IP地址、完全合格域名(FQDN)的每个主机的集群(您可以添加不合格的名称):vi /etc/hosts

1.1.1.1  foo-1.example.com  foo-1
2.2.2.2  foo-2.example.com  foo-2
3.3.3.3  foo-3.example.com  foo-3
4.4.4.4  foo-4.example.com  foo-4

(3)编辑/etc/sysconfig/网络与该主机的唯一的FQDN

# 编辑命令
vi /etc/sysconfig/network

# 内容
HOSTNAME=foo-1.example.com

(4)验证信息是否一致:

a.检查主机名与设置信息是否一致。

uname -a

b.运行/sbin/ifconfig和注意inetaddr值在bond0(eth0)条目中。

/sbin/ifconfig

2、关闭防火墙、禁用selinux

# 关闭防火墙
systemctl stop firewalld

# 禁用selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0

3、每台服务器之间设置免密认证

# 1、准备工作:修改/etc/hosts的服务器ip映射(每台服务器都要做ip映射)【上一步骤已完成,修改后,最好重启下服务器,然后服务器名称应该也会变成root@foo-1】

# 2、生成rsa公私钥:例如在foo-1机器上生成公私钥【注:必须在用户目录下的.ssh文件夹下生成公私密钥,例如用root用户做ssh免密登录,所以对应路径是/root/.ssh】
mkdir /root/.ssh
cd /root/.ssh

# 3、执行以下命令:【如果提示,就一直按“Enter”键,直至生成公钥。执行完成后会生成两个文件id_rsa、id_rsa.pub】
ssh-keygen -t rsa

# 4、把公钥复制到需要免密登录的服务器foo-2
scp id_rsa.pub root@foo-2:/root/.ssh/authorized_keys_from_foo-1

# 5、登录到被登录的服务器foo-2进行公钥合并(说明:如果authorized_keys不存在就会自动创建,如果存在就会追加 )
cd /root/.ssh
cat authorized_keys_from_foo-1 >> authorized_keys  

# 6、登录验证
配置免登录完成后,在本机中输入“ssh root@foo-2” 或者 “ssh [email protected].*.*” 。  
    * 如果无需输入密码,则表示配置免登录成功。  
    * 如果仍需要输入密码,则可能是.ssh目录和文件权限需要修改。

4、设置swap参数

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

sysctl -w vm.swappiness=0
echo "vm.swappiness=0" >>/etc/sysctl.conf

5、设置ntp同步服务器时间

CDH要求在集群中的每台机器上配置Network Time Protocol (NTP)服务。要启动NTP并将其配置为在重新启动时自动运行,请在集群中的每个节点上执行以下步骤。

# 1、安装NTP. 
yum install ntp

# 2、启动NTP服务
sudo systemctl start ntpd

# 3、设置开机自启动
sudo systemctl enable ntpd

# 4、添加定时任务
*/2 * * * * ntpdate -u <ntp_server> >> /dev/null 2>&1 # <ntp_server>通过查看/etc/ntp.conf中 NTP servers内容确定

6、检查python版本(操作系统默认即可)

python --version

7、自定义本地包存储库(本地yum源)

# 1、设置一个Web server
# (1)安装Apache HTTP Server:
sudo yum install httpd
# (2)启动http服务
sudo systemctl start httpd

# 2、下载并配置本地仓库(以Cloudera Manager 6.1.0、redhat7为例)
# cm
sudo mkdir -p /var/www/html/cloudera-repos
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cm6/6.1.0/redhat7/ -P /var/www/html/cloudera-repos
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cm6

# cdh
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh6/6.1.0/redhat7/ -P /var/www/html/cloudera-repos
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh6/6.1.0/parcels/ -P /var/www/html/cloudera-repos/cdh6/6.1.0
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/gplextras6/6.1.0/<operating_system>/ -P /var/www/html/cloudera-repos
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/gplextras6/6.1.0/parcels/ -P /var/www/html/cloudera-repos

sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cdh6
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/gplextras6

# kafka
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/kafka/redhat/7/ -P /var/www/html/cloudera-repos
sudo wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/kafka/parcels/latest/ -P /var/www/html/cloudera-repos/kafka
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/kafka

# 3、测试(查看显示是否正常)
http://<web_server>/cloudera-repos/ #<web_server>以实际信息为准

8、端口信息(用于端口访问权限开通)

由Cloudera管理器和Cloudera导航器使用的端口。

三、安装Cloudera Manager

1、配置yum仓库信息

# 1、创建yum源配置文件
vi /etc/yum.repos.d/cloudera-manager.repo

# 内容
[cloudera-manager]
name=Cloudera Manager 6.1.0
baseurl=http://<web_server>/cloudera-repos/cm6/6.1.0/redhat7/yum/
enabled=1
gpgcheck=0

# 2、导入库签名GPG密钥
sudo rpm --import https://<web_server>/cm6/6.1.0/redhat7/yum/RPM-GPG-KEY-cloudera

2、安装JDK

# oracle-j2sdk1.8安装【官网】
sudo yum install oracle-j2sdk1.8

# 问题:部分服务器安装官网要求版本后出现如下错误:
Unable to find a compatible version of Java on this host,either because JAVA_HOME has not been set or because a   compatible version of Java is not installed. 
# 解决方法:卸载已安装jdk,通过Oracle官网下载1.8版本进行安装
sudo yum remove oracle-j2sdk1.8 -y # 卸载

wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm #下载rpm包

rpm -ivh jdk-8u191-linux-x64.rpm #安装


3、安装server、agent、daemons

#(1)安装
sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

#(2)配置Auto-TLS(官网建议,本人不建议)
sudo JAVA_HOME=/usr/java/jdk1.8.0(具体名称) /opt/cloudera/cm-agent/bin/certmanager setup --configure-services

注:不建议配置Auto-TLS的原因,配置后的后续web安装时会出现agent通信检测超时。

4、数据库安装及配置(以MySQL为例)

# 1、安装
# (1)数据库安装包下载
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

# (2)安装
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

# (3)更新
sudo yum update

# (4)安装server
sudo yum install mysql-server

# (5)启动服务
sudo systemctl start mysqld

# 2、配置
#(1)停止服务
sudo systemctl stop mysqld

#(2)文件转移(备份)
文件列表:/var/lib/mysql/ib_logfile0、/var/lib/mysql/ib_logfile1

# (3)更新配置文件/etc/my.cnf
vi /etc/my.cnf

# (4)设置服务开机启动
sudo systemctl enable mysqld

# (5)启动服务
sudo systemctl start mysqld

# (6)设置MySQL的root密码及其他安全配置
sudo /usr/bin/mysql_secure_installation

    [...]
    Enter current password for root (enter for none):
    OK, successfully used password, moving on...
    [...]
    Set root password? [Y/n] Y
    New password:
    Re-enter new password:
    Remove anonymous users? [Y/n] Y
    [...]
    Disallow root login remotely? [Y/n] N
    [...]
    Remove test database and access to it [Y/n] Y
    [...]
    Reload privilege tables now? [Y/n] Y
    All done!

 注:my.cnf内容如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0

key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES
# 报错信息及处理方法

# 报错信息:
java.sql.SQLException: Statement violates GTID consistency: CREATE TABLE ... SELECT.

# 解决方法:若my.cnf中存在gtid_mode、enforce_gtid_consistency字段,需修改为如下内容:
gtid_mode = OFF
enforce_gtid_consistency = OFF

5、安装MySQL驱动

# 官网配置
# 1、下载驱动包
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

# 2、解压
tar zxvf mysql-connector-java-5.1.46.tar.gz

# 3、jar复制
sudo mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

# 问题:部分服务器执行Cloudera-scm-server服务启动时出现java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver(找不到驱动类)
# 解决方法:通过yum进行驱动安装。
yum install mysql-connector-java -y

6、创建Cloudera相关软件的数据库

# MySQL登录
mysql -uroot -p
-- 创建数据库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

-- 数据库授权
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '<password>';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '<password>';

-- 为root账号授权
grant all privileges on *.* to 'root'@'%' identified by '<password>' with grant option;

-- 验证是否已经创建所有数据库
SHOW DATABASES;

7、建立Cloudera管理器数据库(依据数据库规划,cloudera manager sever使用scm)

# 官网示例
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [options] <databaseType> <databaseName> <databaseUser> <password>

# 执行示例
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm <password>

# 执行结果
Enter SCM password:
JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

注:数据库与CM server为不同服务器时,需修改scm_prepare_database.sh脚本后执行。

# 修改内容:根据DB_HOST关键字查找脚本内容,将信息修改为数据库实际ip信息。

# 原内容
  if [[ -z $DB_HOST ]]; then
    DB_HOST="localhost"
  fi
# 修改为
  if [[ -z $DB_HOST ]]; then
    DB_HOST="<db_server_ip>"
  fi


# 注:未修改时报错信息如下:
[main] DbCommandExecutor ERROR Error when connecting to database.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

四、安装CDH

1、启动CM服务

# server启动
sudo systemctl start cloudera-scm-server

# agent状态检查
sudo systemctl status cloudera-scm-agent

# 检查启动日志
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
结果:INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

2、界面安装

(1)访问http://<server_host>:7180,进入登录页。管理员默认信息:admin/admin

(2)登录后进入欢迎页面,简要概述Cloudera管理器,并链接到版本的发行说明中使用。单击“继续”继续安装。

(3) 选择“是的,。。。”,点击“继续”

 (4)选择“60天试用版”,点击“继续”

(5)自动进入集群安装页面,点击“继续”

(6)点击“继续”(未配置Auto-TLS)

(7)您可以指定多个地址和地址范围如下的用逗号、分号、制表符、空格或空白,或者在单独的行中。使用这种技术进行更具体的搜索的搜索范围过宽。只需要扫描,达到运行SSH主机将被选择用于包含在集群中。你可以输入一个地址范围跨越通过未使用的地址清除,然后在不存在主机在稍后过程中,需要较宽的范围,但更多的时间用于扫描。点击“搜索”,选择主机列表,点击继续。

注:不合格(主机名)短名称必须是唯一的Cloudera管理器实例。例如,你不能host01.example.com和host01.standby.example.Cloudera管理器所管理的同一服务器。

单击Search(搜索),如果存在大量的主机的集群时,等待用以发现和显示。如果搜索花费的时间太长,则可以停止该扫描点击扫描中止。您可以修改搜索模式的搜索和重复一样多的次数直到你需要看到你所有的预期。

 (8)存储库选择:自定义存储库; CDH and other software:使用Parcel,点击“更多选项”。

填写内容如下:

http://<IP>/cloudera-repos/cm6/6.1.0
http://<IP>/cloudera-repos/cdh6/6.1.0/cdh6/6.1.0/parcels/
http://<IP>/cloudera-repos/gplextras6/6.1.0/gplextras6/6.1.0/parcels/

(9)填写主机root登录信息(所有主机root密码一定要一致)

# 指定主机的 SSH 登录方式,一种通过root用户,密码需要一致,刚开始安装建议使用root。也可以使用非root用户,但是需要保证sudo无密码访问。

给aboutyun用户设置无密码sudo权限: 
chmod u+w /etc/sudoers aboutyun ALL=(root)NOPASSWD:ALL 
chmod u-w /etc/sudoers 
测试:sudo ifconfig

(10)错误:root密码异常导致

root密码不一致导致。

(11)自动安装Parcels

(12)主机检查:根据提示修复错误1,错误2暂时可忽略。

(13)选择安装的组件

(14)根据步骤“三-6”,填写数据库信息

 (15)按照默认配置继续(更改目录后,容易因文件权限问题导致,无法启动服务)

(16)配置完成后,点击“完成”,自动跳转到管理平台界面

五、安装过程中遇到的问题

1、执行scm_prepare_database.sh脚本,报错信息:[main] DbCommandExecutor ERROR Error when connecting to database.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

解决方法:修改scm_prepare_database.sh脚本中,关键字DB_HOST的信息由localhost修改为具体主机ID(数据库主机IP)

2、启动CM服务时,报错信息:[main] DbCommandExecutor  INFO  Successfully connected to database.
[main] DbCommandExecutor ERROR Unable to create/drop a table.
java.sql.SQLException: Statement violates GTID consistency: CREATE TABLE ... SELECT.

解决方法:在my.cnf 中将gtid_mode = ON enforce_gtid_consistency = ON 改为 gtid_mode = OFF enforce_gtid_consistency = OFF
3、启动CM服务时,报错信息:Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: HHH010003: JDBC Driver class not found: com.mysql.jdbc.Driver
        at org.hibernate.c3p0.internal.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:131)

解决方法:在线安装驱动,yum install mysql-connector-java
4、启动CM服务时,报错信息:Cloudera Manager will find the Oracle JDK when starting,regardless of whether you installed the JDK using a binary installer or the RPM-based installer. 

Unable to find a compatible version of Java on this host,either because JAVA_HOME has not been set or because a   compatible version of Java is not installed. 

解决方法:安装相对应的JDK版本,并进行环境变量配置。
6、集群安装时,变更目录时权限问题,报错信息:WARN ParcelUpdateService:com.cloudera.cmf.persist.ReadWriteDatabaseTaskCallable: Error while executing CmfEntityManager task
com.cloudera.parcel.ParcelException: Invalid local parcel repository path configured: /opt/cloudera/parcel-repo

解决方法:临时解决方法为恢复默认目录。
7、CM服务启动时,报错信息:
Caused by: java.net.UnknownHostException: archive.cloudera.com: Temporary failure in name resolution
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1277)
        at java.net.InetAddress.getAllByName(InetAddress.java:1193)
        at java.net.InetAddress.getAllByName(InetAddress.java:1127)
        at java.net.InetAddress.getByName(InetAddress.java:1077)
        at com.ning.http.client.NameResolver$JdkNameResolver.resolve(NameResolver.java:28)
        at com.ning.http.client.providers.netty.request.NettyRequestSender.remoteAddress(NettyRequestSender.java:358)
        at com.ning.http.client.providers.netty.request.NettyRequestSender.connect(NettyRequestSender.java:369)
        at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequestWithNewChannel(NettyRequestSender.java:283)

解决方法:暂未解决。
8、在安装agent时, 如果页面操作安装失败, 或者出现一些未知原因,
可以尝试在各自主机执行yum install cloudera-manager-agent -y,
会下载安装700M左右的东东,包括agent和daemons
安装成功后, 执行卸载命令yum remove cloudera-manager-agent -y, 将agent卸载, 然后在界面上安装, 只需要重新下载安装几十M的agent就可以完成(血泪经验分享)
9、安装agent, 如果报错, 提示
BEGIN host -t PTR 10.30.5.160 
160.5.30.10.in-addr.arpa domain name pointer bogon. 
END (0) 
using bogon as scm server hostname 
BEGIN which python

需要在各失败的agent机器上执行mv /usr/bin/host /usr/bin/host.bak

六、备注:

# 1、常用命令
journalctl -xe # 查看系统日志
rpm -e --nodeps <软件名> # 卸载rpm软件
rpm -qa | grep <软件名> # 查找已安装软件
rpm -ivh <软件名> # 安装软件
yum remove <软件名> -y # 卸载已安装yum软件
yum install <软件名> -y # 安装软件

# 2、CM卸载
yum remove cloudera* -y 

find / -name clouder* 
rm -rf <文件名>


# 3、CM卸载(未测试)
find / -name clouder* | xargs rm -rf
find / -name cmf* | xargs rm -rf 

cd /var/lib/
rm -rf flume-ng/ hadoop-* oozie/ solr/ sqoop* zookeeper
rm -rf hbase hive impala kudu llama sentry spark

进入根目录, 查看是否有dfs, yarn等目录, 将其删掉
rm -rf /dfs /yarn......
# 解析Cloudera Manager内部结构、功能包括配置文件、目录位置
1. 相关目录
    /var/log/cloudera-scm-installer : 安装日志目录。
    /var/log/* : 相关日志文件(相关服务的及CM的)。
    /usr/share/cmf/ : 程序安装目录。
    /usr/lib64/cmf/ : Agent程序代码。
    /var/lib/cloudera-scm-server-db/data : 内嵌数据库目录。
    /usr/bin/postgres : 内嵌数据库程序。
    /etc/cloudera-scm-agent/ : agent的配置目录。
    /etc/cloudera-scm-server/ : server的配置目录。
    /opt/cloudera/parcels/ : Hadoop相关服务安装目录。
    /opt/cloudera/parcel-repo/ : 下载的服务软件包数据,数据格式为parcels。
    /opt/cloudera/parcel-cache/ : 下载的服务软件包缓存数据。
    /etc/hadoop/* : 客户端配置文件目录。


2. 配置
    Hadoop配置文件
    配置文件放置于/var/run/cloudera-scm-agent/process/目录下。如:/var/run/cloudera-scm-agent/process/193-hdfs-NAMENODE/core-site.xml。这些配置文件是通过Cloudera Manager启动相应服务(如HDFS)时生成的,内容从数据库中获得(即通过界面配置的参数)。
    在CM界面上更改配置是不会立即反映到配置文件中,这些信息会存储于数据库中,等下次重启服务时才会生成配置文件。且每次启动时都会产生新的配置文件。
    CM Server主要数据库为scm基中放置配置的数据表为configs。里面包含了服务的配置信息,每一次配置的更改会把当前页面的所有配置内容添加到数据库中,以此保存配置修改历史。
    scm数据库被配置成只能从localhost访问,如果需要从外部连接此数据库,修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf文件,之后重启数据库。运行数据库的用户为cloudera-scm。

    查看配置内容
    直接查询scm数据库的configs数据表的内容。
    访问REST API: http://hostname:7180/api/v4/cm/deployment,返回JSON格式部署配置信息。

    配置生成方式
    CM为每个服务进程生成独立的配置目录(文件)。所有配置统一在服务端查询数据库生成(因为scm数据库只能在localhost下访问)生成配置文件,再由agent通过网络下载包含配置文件的zip包到本地解压到指定的目录。

    配置修改
    CM对于需要修改的配置预先定义,对于没有预先定义的配置,则通过在高级配置项中使用xml配置片段的方式进行配置。而对于/etc/hadoop/下的配置文件是客户端的配置,可以在CM通过部署客户端生成客户端配置。

3. 数据库
Cloudera manager主要的数据库为scm,存储Cloudera manager运行所需要的信息:配置,主机,用户等。

4. CM结构
CM分为Server与Agent两部分及数据库(自带更改过的嵌入Postgresql)。它主要做三件事件:
    管理监控集群主机。
    统一管理配置。
    管理维护Hadoop平台系统。

实现采用C/S结构,Agent为客户端负责执行服务端发来的命令,执行方式一般为使用python调用相应的服务shell脚本。Server端为Java REST服务,提供REST API,Web管理端通过REST API调用Server端功能,Web界面使用富客户端技术(Knockout)。

    Server端主体使用Java实现。
    Agent端主体使用Python, 服务的启动通过调用相应的shell脚本进行启动,如果启动失败会重复4次调用启动脚本。
    Agent与Server保持心跳,使用Thrift RPC框架。

5. 升级
在CM中可以通过界面向导升级相关服务。升级过程为三步:
    下载服务软件包。
    把所下载的服务软件包分发到集群中受管的机器上。
    安装服务软件包,使用软链接的方式把服务程序目录链接到新安装的软件包目录上。

6. 卸载
sudo /usr/share/cmf/uninstall-scm-express.sh, 然后删除/var/lib/cloudera-scm-server-db/目录,不然下次安装可能不成功。

7. 开启postgresql远程访问
CM内嵌数据库被配置成只能从localhost访问,如果需要从外部查看数据,数据修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf文件,之后重启数据库。运行数据库的用户为cloudera-scm。

猜你喜欢

转载自blog.csdn.net/u013153374/article/details/85262477
今日推荐