Hadoop之CDH安装

1. 离线数据存储及查询环境部署

离线数据的存储与查询主要是以hadoop为中心的技术栈,包括hive,hbase,hue,kylin等。部署hadoop的方式比较流行的主要有三种:
1. 直接部署Apache Hadoop,即手工部署,需要自己配置,协调版本兼容等,好处是能够加深理解,但是过程较繁琐。
2. Ambari :Hortonworks的产品,用于创建,管理,监视hadoop集群,完全开源,由社区维护,同样是Apache Software Foundation顶级项目之一。支持集成ElasticSearch,redis,kylin等。
3. Cloudera Manager:Cloudera公司把Apache hadoop开源项目商业化,开发出了Cloudera Manager及CDH等一套相关的hadoop生态系统,分为免费版和商业版,商业版收费。

目前国内Apache Hadoop和Cloudera Manager使用的较多,本系统使用Cloudera Manager按照hadoop的生态系统。
1. Java版本
要求按照Oracle JDK,CM/CDH 5.0及以上版本支持JDK 7,如下表1.2所示:

表1.2 JDK版本支持

JDK 7Supported in all C5.x
1.7u80Recommended / Latest version tested
1.7u75Recommended
1.7u67Recommended
1.7u55Minimum required

在CM/CDH 5.3及更高版本时,开始支持JDK 8,但是,CDH 5.13时开始支持的Kafka 3.0要求JDK 8,不支持JDK 7。由于存在安全风险,JDK 8u40,8u45和8u60不在支持范围之内。支持JDK 8u75,但有一个已知问题:当Oozie服务器在JDK 8u75或更高版本上运行时,Oozie Web Console返回500错误。如下表1.3所示:

表1.3 JDK 8版本支持

JDK 8Supported in C5.3 and Higher
1.8u131Recommended / Latest version tested
1.8u121Recommended
1.8u111Recommended
1.8u102Recommended
1.8u91Recommended
1.8u74Recommended
1.8u31Minimum required

2. 将其中一台主机指定为Cloudera Manager Server主机。提供使用root帐户或具有无密码sudo权限的帐户登录到该主机的功能。
3. 允许Cloudera Manager Server主机在所有主机的同一端口上进行统一的SSH访问。
4. 所有群集主机必须有权访问标准软件包存储库以及archive.cloudera.com或具有所需安装文件的本地存储库。
本系统服务器版本为Centos7,所有安装均以此为准,其他系统版本的安装,请参考官网。

1.2 CM/CDH安装

安装方式主要分为三种:
1. Path A:由Cloudera Manager自动安装,使用嵌入式数据库,适合测试环境,不建议生产环境使用,随着集群的增长,有可能需要数据库的迁移。
2. Path B:使用Cloudera Manager的Parcels or Packages安装(比如yum命令安装)。
3. Path C:手动安装,使用tar压缩包。

方法3在CM5.9.0已经过期了,从CM6.0.0开始,将会被移除,所以,这里选择方法2进行安装。官方建议使用包管理工具来安装产品,例如RHEL兼容系统的Yum。
使用Yum时,如果能够联网,需要将cloudera-manager.repo仓库信息放到/etc/yum.repos.d中,如果服务器无法联网,可以创建本地仓库,将cloudera-manager.repo中的地址指向本地,或者直接将rpm包下载下来,本地安装,yum centos7对应的资源地址如下所示:
1. Location:https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.0/
2. Repo File:https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
3. Tarball File:https://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.12.0_x86_64.tar.gz

如果选择Yum联网安装,则下载Repo File,拷贝到/etc/yum.repos.d/中。或者进入Location指向的地址,可以看到如下图1.7所示的内容:

图1.7 CM5.12.0安装包

将其中的rpm包全部下载,上传到服务器。

1.2.1 安装JDK

首先在Cloudera Manager服务器上安装Oracle JDK(所有服务器都需要安装同一版本的Oracle JDK),从仓库中安装命令如下:

sudo yum install oracle-j2sdk1.7

也可以直接使用rpm包安装,命令如下:

sudo yum localinstall –nogpgcheck jdk-6u31-linux-amd64.rpm
sudo yum localinstall –nogpgcheck oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm

1.2.2 安装外部数据库-MariaDB

生成环境需要单独安装外部数据库,可选的数据库有MariaDB(Mysql),Oracle Server或者PostgreSQL Server,本系统选择用MariaDB。安装命令如下:

yum install mariadb-server

安装完成之后,如果MariaDB启动了,先关闭:

sudo service mariadb stop

接下来,开始配置mariaDB:
1. 备份旧的InnoDB日志文件/var/lib/mysql/ib_logfile0和/var/lib/mysql/ib_logfile1到新位置,移出/var/lib/mysql目录。
2. 确定配置文件my.cnf的位置,一般在如下位置之一:

· /etc/my.cnf
· /etc/mysql/my.cnf
· my.cnf in the DEFAULT_SYSCONFDIR specified during the compilation
· my.cnf in the path, specified in the environment variable MYSQL_HOME (if any)
· the file specified in --defaults-extra-file (if any)
· user-home-dir/.my.cnf

修改配置文件让其慢如以下几个条件:
1. 为了防止死锁,将隔离级别设置为read committed。
· 大多数发行版中的MariaDB安装中的默认设置使用保守的缓冲区大小和内存使用情况。 Cloudera管理服务角色需要高写入吞吐量,因为他们可能会在数据库中插入许多记录。 Cloudera建议您将innodb_flush_method属性设置为O_DIRECT。
2. 小集群(小于50台服务器),可以在同一台主机上存储多个数据库,把每个数据库放在自己的存储卷上。为每个数据库允许最多100个连接,然后额外添加50个连接。例如,对于两个数据库,将最大连接设置为250。如果一台主机存储5个数据库(Cloudera Manager Server,活动监视器,报告管理器,Cloudera导航器和Hive metastore的数据库),则设置为550。
3. 大型集群(超过50个主机) - 不要在同一个主机上存储多个数据库。为每个数据库/主机对使用一个单独的主机。主机不需要为数据库专门保留,但每个数据库应该位于不同的主机上。
4. 开启binlog,能够保证数据库错误恢复。Cloudera Manager本身不要求。
如下为推荐的配置示例:

[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
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/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

完成如上配置之后,则需要将数据库设置为开机启动,命令如下所示:

sudo systemctl enable mariadb
sudo service mariadb start

设置MariaDB的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
 ... Success!

以上就完成了MariaDB的安装和配置,如果没有使用 Cloudera Manager Installer安装Cloudera Manager Server,则需要手动创建数据库和用户账号:
1. Cloudera Manager服务包含的角色有:
1) Activity Monitor(如果使用MapReduce 服务)
2) Reports Manager - 跟踪磁盘利用率和处理活动的时间。Medium-sized.。
2. Each Hive Metastore - 包含Hive元数据。比较小。
3. Sentry Server - 包含授权元数据。比较小。
4. Cloudera Navigator Audit Server - 包含审计信息。在大型集群中,这个数据库可能会变大。
5. Cloudera Navigation Metadata Server - 包含授权,策略和审计报告元数据。比较小。

创建这些数据库时,必须设置为UTF-8编码。首先使用root进入MariaDB:

$ mysql -u root -p
Enter password:

为Activity Monitor, Reports Manager, Hive Metastore Server, Hue Server, Sentry Server, Cloudera Navigator Audit Server, and Cloudera Navigator Metadata Server创建数据库,数据库名,用户名和密码可以是任何值,如下表1.4提供了Cloudera Manager默认的配置名:

表1.4 Cloudera Manager默认数据库名配置

RoleDatabaseUserPassword
Activity Monitoramonamonamon_password
Reports Managerrmanrmanrman_password
Hive Metastore Servermetastorehivehive_password
Sentry Serversentrysentrysentry_password
Cloudera Navigator Audit Servernavnavnav_password
Cloudera Navigator Metadata Servernavmsnavmsnavms_password

创建数据库,执行命令如下:

mysql> create database database DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on database.* TO 'user'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

重要说明:重新启动进程时,将使用保存在Cloudera Manager数据库中的信息重新部署每个服务的配置。如果此信息不可用,则说明群集无法正常启动或运行。必须安排和维护Cloudera Manager数据库的定期备份才能在发生此数据库丢失的情况下恢复群集。

1.2.3 安装Cloudera Manager Server Packages

如果配置了仓库,则安装命令如下:

sudo yum install cloudera-manager-daemons cloudera-manager-server

也可以直接使用rpm包安装,命令如下:

sudo yum --nogpgcheck localinstall cloudera-manager-daemons-*.rpm
sudo yum --nogpgcheck localinstall cloudera-manager-server-*.rpm

安装完Cloudera Manager Server之后,为其配置外部数据库,如下图1.8所示,创建Cloudera Manager Server所需的数据库:

图1.8 Cloudera Manager 数据库

创建数据库之后,运行scm_prepare_database.sh脚本(安装Cloudera Manager Server的服务器上),如下所示:

/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

如下表1.5所示,为脚本的参数说明:

表1.5 scm_prepare_database.sh脚本参数说明

ParameterDescription
database-typeOne of the supported database types:
1. MariaDB – mysql
2. MySQL – mysql
3. Oracle – oracle
4. PostgreSQL - postgresql
database-nameThe name of the Cloudera Manager Server database to create or use.
usernameThe username for the Cloudera Manager Server database to create or use.
passwordThe password for the Cloudera Manager Server database to create or use. If you do not specify the password on the command line, the script prompts you to enter it.

直接执行如上脚本,可能会出现结果会如下图1.9所示:

无法找到mysql驱动程序,如上图6.9红色部分所示,脚本会到/usr/share/java下找Mysql的驱动程序,所以,可以下载mysql-connector-java.jar放到对应目录,下载地址:

http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.21

结果如下图1.10所示:

此时,再次执行如上scm_prepare_database.sh脚本,结果如下图1.11所示:

如果嵌入式PostgreSQL的配置文件存在的话,使用如下命令删除:

rm /etc/cloudera-scm-server/db.mgmt.properties

以上,已经完成了Cloudera Manger Server的安装,接下来,你可以选择手动安装 Oracle JDK, Cloudera Manager Agent 和 CDH以及 Managed Service Packages。或者由Cloudera Manager自动安装它们,但是必须能够联网。
Oracle JDK已经安装完成,注意,每台服务器上都要安装JDK。所以,接下来先安装 Cloudera Manager Agent。

1.2.4 安装 Cloudera Manager Agent

Cloudera Manager Agent负责启动和停止进程,触发安装以及监控集群中的所有主机。你可以手动在所有服务器上安装Cloudera Manager Agent,或者稍后由Cloudera Manager自动安装。注意,手动安装时,每台服务器上都要进行如下的步骤(包括运行Cloudera Manager Service Roles的服务器:Service Monitor, Activity Monitor, Event Server, Alert Publisher, or Reports Manager):

如果配置了yum repo,则可以使用如下命令安装:

sudo yum install cloudera-manager-agent cloudera-manager-daemons

否则,直接使用下载的rpm包进行安装,命令如下:

sudo yum --nogpgcheck localinstall cloudera-manager-daemons-*.rpm
sudo yum --nogpgcheck localinstall cloudera-manager-agent-*.x86_64.rpm 

当安装完成之后,在每一台主机上,配置Cloudera Manager Agent指向Cloudera Manager Server,配置文件为/etc/cloudera-scm-agent/config.ini,配置如下:
1. server_host:运行Cloudera Manager Server的主机的名称(ip地址)。
2. server_port:运行Cloudera Manager Server的主机上的端口。默认7182。

Cloudera Manager和Cloudera Navigator使用的默认端口详情请参考Ports Used by Cloudera Manager and Cloudera Navigator。配置实例如下图1.12所示:

当启动Agent的时候,它将会和Cloudera Manager Server通信。如果通信失败,请参考Troubleshooting Installation and Upgrade Problems

1.2.5 安装CDH和Managed Service

CDH和Managed Service Packages同样能够由Cloudera Manager自动安装或者手动安装,即使用Parcels安装或者Packages安装。之前,使用的都是yum install Packages安装的,Parcels是专用于Cloudera Manager安装的格式,使用Parcels安装,Cloudera Manager自动下载,分发和激活程序。为了区别,Parcels默认安装在/opt/cloudera/parcels,Packages默认安装在/usr/lib。使用Packages安装的话,就无法再使用Parcels安装了,在同一个集群中,你无法即使用Packages又使用Packages安装软件,只能二者选一,所以,这里选择使用Parcels安装。
1. 启动Cloudera Manager

sudo service cloudera-scm-agent start # 所有服务器
sudo service cloudera-scm-server start # Cloudera Manager Server服务器

稍后几分钟,等待Cloudera Manager Server启动成功。在Cloudera Manager Server服务器上。可以查看/var/log/cloudera-scm-server/cloudera-scm-server.log日志,观察启动的过程。如果出错,请参考Troubleshooting Installation and Upgrade Problems。

  1. 登录Cloudera Manager Web Ui

当Cloudera Manager启动成功之后,访问地址http://Server host:port, 端口默认7180,进入Web界面,首先出现的登录界面,默认的用户名:admin,密码:admin。接下来是最终用户协议和条件,点击YES之后,进入Welcome to Cloudera Manager界面。如下图1.13所示:


在这里选择免费版本,提供的功能相较于企业版少一些,通常情况下,已经够用了。
点击继续以进入安装界面,如下图1.14所示:

这一步,有两个选项卡,如果没有提前手动安装和启动Cloudera Manager Agent,则选择“新主机”,填入主机名,Cloudera Manager Server自动搜索能够免密登录的主机,然后在其上自动安装Cloudera Manager Agent。由于已经安装和启动了Cloudera Manager Agent,并且成功启动,这里选择“当前管理的主机”,就能够直接看到启动了Cloudera Manager Agent的主机,勾选上即可。如果“当前管理的主机”显示的不完全,同样可以使用新主机进行搜索。如下图1.15所示:

点击搜索,结果如下图1.16所示:

勾选上“当前受管”为否的主机,此时主机“dyl02”因为“当前受管”状态为是,所以无法勾选,这一步先忽略该主机,下一步,显示如下图1.17所示:
注:事后检测原因,由于直接克隆的虚拟机,导致/var/lib/cloudera-scm-agent/uuid内容相同,即agent的uuid相同,所以,只能显示出一个agent,无法两个agent同时存在,将集群中主机删除,修改其中一个uuid内容,然后在Cloudera Manager界面重新添加主机,之后重新进入集群安装,与下列步骤相同。

这一步,需要选择安装CDH的方式,有两种方式,使用数据包和使用Parcel,如果服务器已经使用数据包安装了CDH,则这里不能再选择使用Parcel,两者无法同时使用,建议选择Parcel。
使用Parcel安装,可以选择离线安装和在线安装,在线安装时,Cloudera Manager自动下载所需包,默认存放到/ opt/cloudera/parcel-repo,如果服务器无法联网,或者网速较慢,可以提前下载下来,将所需文件放入该目录,下载地址为:

https://archive.cloudera.com/cdh5/parcels/5.12.0/

下载内容:

CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel
CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel.sha1
manifest.json

将CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel.sha1重命名CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel.sha,同时编辑内容,将hashcode后面的url去掉。
如图1.17所示,勾选“使用Parcel安装”,选择CDH版本为CDH-5.12.0-1.cdh5.12.0.p0.29,点击“继续”,进入下一步,选择是否安装Oracle Java SE开发工具,由于已经安装完成,这一步直接“继续”,进入“启用单用户模式”,不启动单用户模式,直接“继续”,接下来,提供SSH登录凭据,如下图1.18所示:

同时安装的数量设置为适当的数值,这里因为是虚拟机,所以设置为1。点击“继续”,第五步时,将进行Cloudera Manager集群的安装,一段时间之后,集群安装成功,如下图1.19所示:

下一步,将会安装CDH集群,这一步,如果没有预先下载CDH包,则首先会下载CDH,这里已经提前下载,所以将会直接安装。等待一段时间,CDH安装完成,如下图1.20所示:

继续之后,将检查主机正确性,等待约一分钟,检测结果如下图1.21所示:

如上图1.21所示,建议vm.swappiness设置为10等建议,根据其提示进行相关操作,如下图1.22所示:

浏览器输入网址:http://192.168.42.131:7180,进入Cloudera Manager管理界面之后,首先需要先添加Cloudera Manager Service,在右上角,如下图1.21所示,点击“添加Cloudera Manager Service”:

弹出界面如下图1.22所示,选择性填入有效信息之后,完成添加:

在没有添加Cloudera Manager Service时,首页可能会报错,比如无法连接Host Monitor等,启动该服务成功,等待一段时间,所有服务准备就绪,首页正常,如下图1.23所示:


如下图1.24是Cloudera Manager Service提供的服务,包括了Host Monitor:

如上,已经完成Cloudera Manager的基本部署,需要的功能,只需要在Cloudera Manager的Web上添加服务,并且完成对应的配置,即可完成部署和启动。

1.2.6 添加HDFS服务

Cloudera Manager的服务之间,很多是有依赖关系的,例如,如果需要Hive服务,则需要先安装HDFS和YARN服务,所以,接下来,先添加HDFS服务,如下图1.25所示:

首先,如上图1.25所示,单击“添加服务”,将进入下图1.26所示界面,选择HDFS服务,

如上图1.26所示,点击继续,进入HDFS服务配置界面,如下图1.27所示:

选择主机的角色,分配不同的功能,如上图6.27所示,“dyl02”主机作为NameNode,“dyl”主机作为DataNode,单击“继续”,进入更改HDFS大小,数据目录等配置,根据需要修改,单击“继续”,进入部署界面,开始运行命令,配置并启动HDFS,等待完成,点击“继续”,进入成功界面,点击“完成”,成功添加HDFS服务。

1.2.7 添加YARN服务

YARN服务依赖HDFS服务,如上已经完成HDFS服务的安装与启动,则可以继续添加YARN服务。同样,如图1.25所示,点击“添加服务”按钮,选择YARN,分配主机角色,如下图1.28所示:

根据主机配置,分配不同功能,这里由于“dyl”主机内存不足,分配到“dyl02”主机上。点击“继续”,将会配置NodeManager本地目录,配置后继续,将开始部署和启动YARN服务,启动完成之后,点击“继续”,等待YARN服务添加到集群中,直接点击“完成”

1.2.8 添加Hive服务

如上图1.25所示,点击“添加服务”,选择Hive,进入Hive配置界面,首先选择主机,如下图1.29所示:

根据主机配置,选择Hive安装到哪台主机上,点击“继续”,将配置hive metadata数据库,如下图1.30所示:

在前面章节安装外部服务器mariaDB时,已经创建了hive的元数据库metastore,按照提示填入对应信息即可。
如上图1.30所示,无法找到jdbc驱动程序,操作和6.4.2.3中相同,“dyl02”服务器上传mysql-connector-java.jar到/usr/share/java中,Cloudera Manager Agent默认加载该目录下jar包。再次点击“测试连接”,显示成功,点击“继续”,显示配置hive目录和端口的界面,点击“继续”,开始部署并启动hive,如下图1.31所示:

从图1.31可以看出,自动创建了Hive Metastore的数据库表,如上,已经添加了HDFS,YRAN和Hive服务,离线数据库Hive的部署完成,表明已经可以通过Flume,向Hive写入数据了。
其他服务,例如hue,HBase等的添加过程类似,在这里不一一赘述。注意,安装HBase之前,需要首先安装Zookeeper服务。

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值