一、CDH介绍:
CDH(Cloudera's Distribution,including Apache Hadoop).是Haoop众多分支中的一种大数据,简称CDH,基于最稳定版本的Apache Hadoop,有许多补丁、向后移植和更新,Cloudera公司以多种不同的形式进行发布。包括源码和二进制tar文件,、RPM等等。CDH是Apche2.0许可下发布的自由软件,用户可以直接从官方https://www.cloudera.com/上获取。
CDH6.1.0支持如下组件:
组件名称 | 用途 |
---|---|
Zookeeper | Apache ZooKeeper 是用于维护和同步配置数据的集中服务。 |
HDFS | HDFS是 Hadoop 应用程序使用的主要存储系统。 |
yarn | Apache Hadoop MapReduce 2.0 (MRv2) 或 YARN 是支持 MapReduce 应用程序的数据计算框架。依赖HDFS服务。 |
HBase | 支持随机读/写访问的Hadoop数据库(HBase是一个分布式、面向列的开源数据库,) |
Hive | 在大数据集合上的类SQL查询和表。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 |
impala | Impala是一个新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。 |
solr | Solr是一个分布式服务,用于编制存储在 HDFS 中的数据的索引并搜索这些数据。 |
spark | Spark是强大的开源并行计算引擎,基于内存计算,速度更快;接口丰富,易于开发;集成SQL、Streaming、GraphX、MLlib,提供一栈式解决方案。 |
flume | 高可靠、可配置的数据流集合。 |
storm | Storm是一个分布式的、容错的实时计算系统。 |
kafka | Kafka是一种高吞吐量的分布式发布订阅消息系统。 |
Hue | 可视化Hadoop应用的用户接口框架和SDK。。 |
Sqoop | 以高度可扩展的方式跨关系数据库和HDFS移动数据 |
oozie | Oozie是一种框架,是用于hadoop平台的作业调度服务。 |
Avro | 数据序列化:丰富的数据结构,快速/紧凑的二进制格式和RPC。 |
Crunch | Java库,可以更轻松地编写,测试和运行MR管道。 |
DataFu | 用于进行大规模分析的有用统计UDF库。 |
Mahout | 用于群集,分类和协作过滤的库。 |
Parquet | 在Hadoop中提供压缩,高效的列式数据表示。 |
Pig | 提供使用高级语言批量分析大型数据集的框架。 |
MapReduce | 强大的并行数据处理框架。 |
Pig | 数据流语言和编译器 |
Sqoop | 利用集成到Hadoop的数据库和数据仓库 |
Sentry | 为Hadoop用户提供精细支持,基于角色的访问控制。 |
Kudu | 完成Hadoop的存储层,以实现对快速数据的快速分析。 |
二、CDH6.1.0安装前环境的部署
CDH的部署方式:联网安装,离线包安装。
生产环境的磁盘配置要求
- 系统盘建议做RAID1,容量建议200G以上,并且做LVM逻辑卷,这样可以动态调整系统盘空间大小,CM安装在系统盘
- 管理节点的数据盘做RAID5,管理节点的数据都放在数据盘中
- 数据节点的数据盘做RAID0(一块盘做RAID0,硬件RAID),文件格式为xfs,并配置noatime,不做LVM,最好是同构
1、CM6.1.0以及CDH6.1.0的安装:
系统环境:
- 主机规划:]
主机名 | 角色 | IP地址 | 用途 | 配置 |
---|---|---|---|---|
Centos210.com | 主节点 | 10.18.223.210 | CM、Cloudera Server、mysql | 8C/16G/150G |
Centos151.com | 从节点 | 10.18.223.151 | Cloudera Agent | 8C/16G/150G |
Centos239.com | 从节点 | 10.18.223.239 | Cloudera Agen | 8C/16G/150G |
Centos65.com | 从节点 | 10.17.87.65 | Cloudera Agen | 8C/16G/150G |
PS:主机的内存最好在10G以上,才能保证环境的正常运行。
2、提前下载相关的RPM安装包以及封装的组件的Parcel包。
Cloudera Manager以及相关依赖环境、jdk、agent以及server的下载地址:
- cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
- cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm
- cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm
- cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm
- oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
3、在主节点上配置Cloudera Manager仓库,便于从节点的agetn的安装(添加存储库的时候会用到)。
yum -y install httpd createrepo
systemctl start httpd && systemctl enable httpd
cd /var/www/html/cloudera-repos/ && createrepo . #生成RPM元数据:
ll /var/www/html/cloudera-repos/ cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm repodata
4、Centos7.6版本下的CDH6.1.0二进制Parcel包下载地址(下载与系统匹配的包):https://archive.cloudera.com/cdh6/6.1.0/parcels/
- CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel
- CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
- manifest.json
5、每台服务器进行系统环境设置:
网络配置
-
确保没有启用IPV6,所有节点同步
编辑
/etc/sysctl.conf
文件:
# 禁用IPV6 net.ipv6.conf.all.disable_ipv6= 1 net.ipv6.conf.default.disable_ipv6= 1 net.ipv6.conf.lo.disable_ipv6= 1
修改后执行sysctl -p
命令;
/etc/sysconfig/network
文件中新增:
NETWORKING_IPV6=no
IPV6INIT=no
①、分别给每台服务器修改主机名:
hostnamectl set-hostname cdh210.com
hostnamectl set-hostname cdh151.com
hostnamectl set-hostname cdh239.com
hostnamectl set-hostname cdh65.com
②、每台服务器分别把主机名与ip对应关系写进/etc/hosts
上。
# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 10.18.223.151 cdh151.com 10.18.223.239 cdh239.com 10.18.223.210 cdh210.com 10.17.87.65 cdh65.com
③、每台服务器永久关闭防火墙、selinux:
systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service #设置防火墙关闭启动 setenforce 0 #临时关闭selinux sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #永久关闭selinux
④、每台服务器配置ntp服务,添加时间服务器,并启动时间服务器,开机启动,写入硬件时钟:
#yum -y install ntp #sed -i 's/server 0.centos.pool.ntp.org iburst/#server 0.centos.pool.ntp.org iburst/g' #/etc/ntp.conf #sed -i 's/server 1.centos.pool.ntp.org iburst/#server 1.centos.pool.ntp.org iburst/g' #/etc/ntp.conf #sed -i 's/server 2.centos.pool.ntp.org iburst/#server 2.centos.pool.ntp.org iburst/g' #/etc/ntp.conf #sed -i 's/server 3.centos.pool.ntp.org iburst/#server 3.centos.pool.ntp.org iburst/g' #/etc/ntp.conf #sed -ie 's/#server 3.centos.pool.ntp.org iburst/#server 3.centos.pool.ntp.org iburst \nserver 10.17.87.8/g' /etc/ntp.conf #systemctl restart ntpd && systemctl enable ntpd && ntpq -p && hwclock -r
⑤、安装python2.7(centos7.6默认安装python2.7)
# python --version Python 2.7.5
⑥、设置主节点服务器免密码登陆从节点服务器
# ssh-keygen -t rsa
一路回车,生成无密码的密钥对。然后将公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置ahthorized_keys的访问权限,并发送到所有从节点服务器上
# chmod 600 ~/.ssh/authorized_keys # scp ~/.ssh/authorized_keys root@10.17.87.65:~/.ssh/ # scp ~/.ssh/authorized_keys root@10.18.223.239:~/.ssh/ # scp ~/.ssh/authorized_keys root@10.17.87.65:~/.ssh/ # scp ~/.ssh/authorized_keys root@10.18.223.151:~/.ssh/
ps:发送公钥到从节点上,进行ssh访问,如果需要密码说明发送没成功,有可能是从节点上没有创建 ~/.ssh/ 目录,导致不成功,创建该目录即可。
⑦、创建/opt/cloudera/parcel-repo/,并
将下载的Parcels放到主节点上的/opt/cloudera/parcel-repo/
中,
提前把下载的CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
重命名为:CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
[root@cdh210 parcel-repo]# ll CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha
三、CDH6.1.0的安装:
1、主节点安装repo,并导入GPG key:
#wget https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/ #rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera
2、主节点上按照如下顺序进行JDK、CM、server、agent安装以及agent的安装。
# yum -y install oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm # yum -y install cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm # yum -y install cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm # yum -y install cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
3、数据库5.6安装:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server systemctl start mysqld systemctl enable mysqld
初始化Mysql
/usr/bin/mysql_secure_installation
回车-Y-设置密码-再次设置密码-Y-N-Y-Y
4、备份数据库配置文件,并修改数据库的配置。
# cp /etc/my.cnf{,.bak}

vi /etc/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
5、安装MySQL JDBC Driver
#wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz #tar zxvf mysql-connector-java-5.1.46.tar.gz #mkdir -p /usr/share/java/ #cd mysql-connector-java-5.1.46 #cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
6、给mysql数据库创建需要用到的库:scm、amon、rman、hue、metastore、sentry、nav、navms、oozie、hive
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm@123'; CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY ' amon@123'; CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman@123'; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue@123'; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'metastore@123'; CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry@123'; CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav@123'; CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms@123'; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie@123'; CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive@123'; flush privileges;
7、建立CM的数据库:
如果数据库和CM在一台服务器上
···
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
Enter SCM password: #输入SCM的密码
写入如下:
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!
···
8、启动CM服务:
# systemctl start cloudera-scm-server
四、CDH6.1.0的初始化
1、登陆CDH6.1.0
http://<server_IP>:7180
用户名:admin
密码:admin

2、安装步骤:
①、欢迎界面--ACCESS LIENCSE--选择免费版本,完成。

欢迎(继续)
跳过Auto-TLS以自动创建证书:(后面配置麻烦,如果不开启https,可以跳过此项)
添加主机(由于我已经进行该主机的添加,因此没法重复添加):

③、添加存储:
可以使用Public Cloudera Repo(需要联网,下载会慢点),
也可以直接使用搭建的存储库:http://10.18.223.210/cloudera-repos/
存储库的搭建:
备份其他repo,并在各个节点上创建repo文件:
# mv /etc/yum.repo,d/* /etc/yum.bak/
cd /etc/yum.repo.d/ && vi cloudera-manager.repo
添加如下内容:
[cloudera-manager] name=Cloudera Manager 6.0.1 baseurl=http://10.18.223.210/cloudera-repos/ gpgcheck=0 enabled=1
Parcel的选择,如果按照要求将下载的Parcels放到主节点上的/opt/cloudera/parcel-repo/
中,会出现CDH6.1.0,如果没有,点击更多选项进行查看路径的选择。
④JDK的安装,由于我们在上面已经进行JDK的安装,此步骤直接继续(不勾选)。
输入主机的凭证--自动安装Agent。(安装Agent中遇到无法安装的问题,有可能由于缺少rpm依赖包、主机之间无法通行)--安装Parcels。
五、CDH6.1.0优化:
1、虚拟内存设置
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
永久解决
sysctl -w vm.swappiness=0
echo vm.swappiness = 0 >> /etc/sysctl.conf
# 然后执行sysctl -p命令
2、大内存页设置
大内存页禁用
echo never>/sys/kernel/mm/transparent_hugepage/defrag echo never>/sys/kernel/mm/transparent_hugepage/enabled
# 给此文件赋予执行权限
chmod +x /etc/rc.d/rc.local
# 在rc.local文件中增加如下内容
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
六、CDH6.1.0集群安装
1、选择服型,我的业务类型选择了,Operation Database。也可以自定义选择自己所需要的服务,一般情况下,HDFS Hive Hue Yanr Zookeeper HBase即可满足要求。

2、角色分配:选择服务后,CDH会自动给节点进行角色分配,也可以自定义调整。
3、数据库设置,不同组件之间拥有不同的库,我们在进行数据库安装的时候已经进行数据库的库的创建,现在输入进去即可使用。
到此,CDH集群的安装已经基本完成。
如果部署失败,卸载CDH的环境重新进行部署。
systemctl stop cloudera-scm-server systemctl stop cloudera-scm-agent yum -y remove 'cloudera-manager-*' yum clean all
到此CDH6.1.0的部署结束,登陆界面进行组建的部署。