通过Cloudera Manager安装CDH 5.6

CDH的简单介绍

大家经常说CDH,其全称是:Cloudera’s Distribution Including Apache Hadoop,简单的说是Cloudera公司的Hadoop平台,是在Apache原生的Hadoop个组件基础上进行了封装和加强。CDH里面有些什么东西呢?如下图:

那么这个CDH软件如何安装呢?Cloudera公司提供了一套安装CDH,管理、维护CDH各组件的一个软件,叫做Cloudera Manager(以下简称为CM)。CM本身是一种主从结构,由CM Server和CM agent构成,所以,在后面可以看到,在安装CM时,是要先在一台主机上安装CM Server,然后在各个主机上安装CM agent。

我们接下来要讲的就是利用CM 5.6 来安装CDH 5.6。

在Cloudera的官网上CM安装CDH的文档中,介绍了几种安装方法:A、B、C。对于生产环境,可以选用B和C。B是先手工安装好CM,然后通过CM自动来安装其他组件。而C是CM和其他所有组件都是通过tarball的方式进行手工安装。我们采用的是CM用tarball来安装,其他组件都用CM来安装。

以下没有特殊说明,都采用root用户操作

环境准备

  • 关闭所有主机的防火墙,对于SuseLinux是:
SuSEfirewall2 stop
  • 修改所有主机的/etc/hosts文件,把所有主机的主机名和IP地址写入此文件
  • 将所有的主机都配置成SSH免密码登录,包括本机登录本机。
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

然后将每台机器中的~/.ssh/authorized_keys文件中的内容追加到其他机器~/.ssh/authorized_keys文件的末尾。

  • 安装oracle JDK 1.7,设置好环境变量JAVA_HOME、PATH。

    在.profile或者.bash_profile中设置

export JAVA_HOME=JAVA安装地址
export PATH=.:$JAVA_HOME/bin:$PATH

使其生效

source .bash_profile
  • 确保python已经安装,且版本是2.6或者2.7

Mysql安装

  • 下载一个mysql的rpm包,我们这里用的是:MySQL-server-5.5.28-1.linux2.6.x86_64.rpm,版本最好是5.5或者5.6

    如果系统已经存在低级别的版本,先执行下面的命令卸载:

rpm -e mysql --nodeps

然后再安装:

rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm
  • 配置my.cnf

    如果/etc/my.cnf文件不存在,可以执行如下命令生成一个

touch /etc/my.cnf

里面的内容可以使用文档中推荐的配置值:

[mysqld]
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 = 16M
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

# For MySQL version 5.1.8 or later. Comment out binlog_format for older versions.
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
  • 设置mysql的自启动
chkconfig --add mysql
  • 启动mysql
service mysql start

如果启动失败了,参看后面“遇到的问题”一节

  • 安全配置
/usr/bin/mysql_secure_installation

$ 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!

tar zxvf mysql-connector-java-5.1.38.tar.gz
cp mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jar
  • 为其他组件创建数据库实例

    我们只要创建hive和activity

    以创建hive为例,用mysql root用户登录mysql后执行:

create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘;
flush privileges;
use hive;
  • 如果你还需要其他组件,可以参考文档下面三小节:

    • Creating Databases for Activity Monitor, Reports Manager, Hive Metastore Server, Sentry Server, Cloudera Navigator Audit Server, and Cloudera Navigator Metadata Server
    • Configuring the Hue Server to Store Data in MySQL
    • Configuring MySQL for Oozie

Cloudera Manager的安装

由于采用tarball安装CM,可以参考文档

tar -xzf cloudera-manager*.tar.gz
  • 在CM Server上创建用户
useradd --system --home=/opt/cm-5.6.0/run/cloudera-scm-server --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 创建CM Server的本地存储目录
mkdir /var/lib/cloudera-scm-server
mkdir /var/log/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-server
  • 配置CM agent

    在CM Server上修改/opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini文件,只需要将server_host修改为CM Server的主机名

  • 将解压后的整个文件夹scp到其他各个主机
scp -r /opt/cm-5.6.0 各主机的/opt目录
  • 创建parcel目录

    什么是parcel?可以理解为就是一个CDH的安装文件,由CM在安装CDH的时候读取。

    • 先在CM Server主机上执行:

      mkdir -p /opt/cloudera/parcel-repo

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

    • 然后在各CM Agent主机上执行:

      mkdir -p /opt/cloudera/parcels

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

  • 创建CM Server的数据库

    执行如下命令,命令的具体含义可以参考安装文档

/opt/cm-5.6.0/share/cmf/schema/scm_prepare_database.sh mysql scm  -hlocalhost -uroot -proot  --scm-host localhost scm scm scm
  • 启动CM Server,并设置自启动
/opt/cm-5.6.0/etc/init.d/cloudera-scm-server start
cp /opt/cm-5.6.0/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
chkconfig cloudera-scm-server  on

修改/etc/init.d/cloudera-scm-server文件的内容,将CMF_DEFAULTS 的值由 ${CMF_DEFAULTS:-/etc/default} 改为/opt/cm-5.6.0/etc/default

  • 启动CM Agent,请设置自启动
/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
cp /opt/cm-5.6.0/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
chkconfig cloudera-scm-agent on

修改/etc/init.d/cloudera-scm-agent文件的内容,将CMF_DEFAULTS 的值由 ${CMF_DEFAULTS:-/etc/default} 改为/opt/cm-5.6.0/etc/default

注意:如果CM Server主机上也要启动CM Agent,则也要执行上述命令

CDH的安装

如果CM Server和CM Agent都成功启动后,我们就可以安装CDH了。

  • parcel安装包的准备

    到这里下载parcel包,一共包括三个文件(对于SuseLinux来说):

    CDH-5.6.0-1.cdh5.6.0.p0.45-sles11.parcel

    CDH-5.6.0-1.cdh5.6.0.p0.45-sles11.parcel.sha1

    manifest.json

    下载完后,将三个文件放到CM Server主机的/opt/cloudera/parcel-repo目录下,并且执行如下命令:

mv CDH-5.6.0-1.cdh5.6.0.p0.45-sles11.parcel.sha1  CDH-5.6.0-1.cdh5.6.0.p0.45-sles11.parcel.sha
  • 首先利用浏览器登录CM Server的主机: http://CM-Server-host:7180,默认登录用户名,密码是admin,admin
  • 如果是第一次安装,会选择CM的版本,我们选择Cloudera Express就可以了。

  • 选择加入集群的主机

    这里会自动显示出启动了CM Agent进程的服务器,如果没有显示,请检查/opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini文件中server_host是否配置为CM Server的地址

  • 选择需要安装的parcel版本

    如果这里没有正确显示你下载的parcel版本,那么请检查”parcel安装包的准备”小节。

  • 选择JAVA安装

    这一步由于之前我们已经手动安装过了JAVA SDK,所以这一步不要选择复选框,直接继续

  • 输入主机root的登录密码

  • 实施安装

  • 主机检测

    随后会对各主机的环境进行检查,一般会报以下几个错误:

    • 时间不同步

      参见“遇到的问题”小节会有解决办法,这里可以先不管。但最好还是将每台机器的时间设置一致,可以不用安装NTP服务。

    • swappiness的问题

      按照提示执行如下命令:

      bash

      sysctl vm.swappiness=0

    • 主机缺少用户错误

      参见“遇到的问题”小节的解决办法。

解决这些问题后,可以选择重新运行再做检查。

  • 选择安装的组件

    这里我们选择所有服务

  • 自定义角色分配

    这里主要是选择如何在各主机之间分布各个组件

  • 为各个组件设置数据库

    这里涉及到的是Hive和Oozie,

  • 设置hadoop的目录

  • 执行安装

    这里也许会遇到一些问题。需要随机应变解决咯…

遇到的问题

  • mysql的启动问题

    Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

    执行如下命令解决:

mysql_install_db --user=mysql 
  • 各主机时间不同步的问题

    在主机->配置页面,搜索栏中输入时钟,将警告和严重都设置为“从不”。如下图所示:

  • 主机缺少用户错误

    查看agent的日志,发现agent创建用户的时候失败了,通过搜索代码,发现如下文件中在创建用户:

    /opt/cm-5.6.0/lib64/cmf/agent/src/cmf/parcel.py

    它里面有这样一个代码,发现在使用useradd命令时,它使用了一个-U选项,这个选项在SuseLinux操作系统的useradd命令中是没有的,不知道其他OS的useradd是否支持此选项。

    解决办法很简单,我们把499行这一段代码注释掉就可以了:

    
    #umask_arg, umask_param,
    

487 for user, data in users.items():

488 try:

489 if self.is_suse:

490 umask_arg = ‘-U’

491 umask_param = ‘022’

492 else:

493 umask_arg = ‘-K’

494 umask_param = ‘UMASK=022’

495

496 useradd_args = [ “/usr/sbin/useradd”,

497 “-r”, “-m”,

498 “-g”, user,

499 umask_arg, umask_param,

500 “–home”, data[‘home’],

501 “–comment”, data[‘longname’],

502 “–shell”, data[‘shell’] ]

  • Yarn启动失败的错误

    错误信息类似于:

Traceback (most recent call last):

File “/opt/cm-5.6.0/lib64/cmf/agent/src/cmf/util.py”, line 370, in source

return dict((line.split(“=”, 1) for line in data.splitlines()))

ValueError: dictionary update sequence element #103 has length 1; 2 is required

网上有人贴出了如下解决方法:

这个错误是CM的一个bug,解决方法为修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:

pipe = subprocess.Popen([‘/bin/bash’, ‘-c’, “. %s; %s; env” % (path, command)],

stdout=subprocess.PIPE, env=caller_env)

修改为:

pipe = subprocess.Popen([‘/bin/bash’, ‘-c’, “. %s; %s; env | grep -v { | grep -v }” % (path, command)],

stdout=subprocess.PIPE, env=caller_env)

这个方法是过滤掉env的输出,但是对于我的环境是没有用的,其实代码就是把env的输出保存到一个字典中,每一行是一个key=value的形式,但是如果env的输出中存在只有key,没有=等号的情况,那么插入字典时就会失败。我在agnet的日志中看到了打印的env的输出,果然有一行是这样的:

CLASSPATH=/usr/java/java^M/lib

这个^M是一个特殊的字符,应该是\r\n这类的,是一个换行,从而导致/lib后面没有等号,所以解决办法应该是:

修改格式不对的环境变量的值

CM重要文件的位置

  • CM Agent的功能文件位置:/opt/cm-5.6.0/lib64/cmf/agent/src/cmf/agent.py
  • CM Server和CM Agent的日志位置: /opt/cm-5.6.0/log/
  • CM Agent启动各组件的脚本位置:/opt/cm-5.6.0/lib64/cmf/service/
  • 安装完后各组件的安装位置:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/xxx,其中xxx为组件的名字,例如spark的位置就是/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/spark目录
  • 安装完后各组件的配置文件的位置:/etc/xxx/conf,其中xxx为组件的名字,例如spark的配置文件就是/etc/spark/conf,conf是一个软链接,实际指向到/etc/alternatives/spark-conf
  • 各组件的运行时日志的位置:/var/log/xxx,其中xxx为组件的名字,例如oozie的日志就在/var/log/oozie目录里面

参考文档

  1. Cloudera Manager 和 CDH 4 终极安装
  2. CDH使用之CDH 5.3.x安装
  3. Cloudera Installation and Upgrade
时间: 2024-08-04 03:49:50

通过Cloudera Manager安装CDH 5.6的相关文章

转Cloudera Manager 和 CDH 4 终极安装

系统环境 操作系统:CentOS 6.5 Cloudera Manager 版本:4.8.1 CDH版本:4.5.0 各机器准备工作: yum -y groupinstall "Development tools" yum -y install wget  Cloudera-manager压缩包地址:    http://archive.cloudera.com/cm4/cm/4/cloudera-manager-el6-cm4.8.1_x86_64.tar.gz CDH 下载地址:

Uninstalling Cloudera Manager and CDH in SLES

一.如果在安装过程中因为某些原因没有正常完成安装,你想重新继续安装. 执行: 1.删除文件和目录 rm -Rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/cloudera* 2.重新启用安装程序 二.如果你想彻底卸载Cloudera Manager 和 CDH 软件和数据. 执行以下步骤: 1.卸载Cloudera Manager 和 CDH 软件 2.删除Cloudera Manager 和 CDH 数据 1.卸载Cloudera Man

Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)

Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是cloudera CM .CDH?2.CDH.CM有哪些版本?3.CDH.CM有哪些安装方式?4.CDH如何开发? <ignore_js_op> 我们知道cloudera CDH 是为简化hadoop的安装,也对对hadoop做了一些封装.那么我们就像尝试学习cloudera.cloudera本质h

CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解

一.概念介绍 1.CDH 概览 CDH是Apache Hadoop和相关项目的最完整.最受测试和最流行的发行版.CDH提供Hadoop的核心元素-可伸缩存储和分布式计算-以及基于web的用户界面和重要的企业功能.CDH是Apache许可的开放源码,是唯一提供统一批处理.交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案. CDH 提供以下特性: 灵活性:存储任何类型的数据并使用各种不同的计算框架进行操作,包括批处理.交互式SQL.免费文本搜索.机器学习和统计计算. 集成:在一个

Cloudera Manager安装

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/4689422.html  本文介绍centos 6中CM5.4的安装步骤 一.搭建yum仓库 1.搭建web服务器,具体步骤省略 2.下载CM.CDH的parcels包 下载cm rpm包: wget -r -L -np http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.4/ 下载CDH parcels包: wget -r -L -np http:

Cloudera Manager Server CDH 5.15部署

安装前准备 主机和系统 Host OS Memory IP bigdata001-dev Cent OS 7.4 x64 32G 192.168.1.1 bigdata002-dev Cent OS 7.4 x64 32G 192.168.1.2 bigdata003-dev Cent OS 7.4 x64 15G 192.168.1.3 bigdata004-dev Cent OS 7.4 x64 32 192.168.1.4 安装包下载 下载 cloudera-manager.repo 文件

全网最全Centos7 Cloudera Manager 安装与使用

全网最全Centos7 安装与使用 Cloudera Manager  一.准备工作 1.修改hostname 2.关闭selinux 3.关闭防火墙 4.配置hosts 5.安装JDK 6.配置环境变量 二.安装Cloudera Manager  1.从官网下载CDH软件包和Cloudera Manager 安装包 2.安装相关依赖组件 3.启动Httpd服务 4.配置NTP时钟同步 5.安装MySQL 6.Cloudera Manager Server的安装 7.Cloudera Manag

cloudera manager安装步骤小结

1.准备三台虚拟机,系统是centos 7,IP分别是: 192.168.254.110 master 192.168.254.111 slave1 192.168.254.112 slave2 2.如果没有httpd服务的话 需要在master上安装一个httpd: 1) yum install httpd #(安装) 2) systemctl start httpd.service #(启动) 3.配置ssh免密码登录: 具体操作请见我的另一篇文章<Hadoop2.6.0在CentOS 7中

Upgrade Cloudera Manager and CDH 5.2.1 to 5.3.0

Upgrade Cloudera Manager 5.2.1 to 5.3.0 1. Stop the Cloudera Management Service2. Stop the Hive service and all services such as Impala and Hue that use the Hive metastore.3. Backup MySQL Databases (mysqldump -uroot -p --single-transaction --flush-lo