目录
一、CDH介绍
二、CDH6.1.0安装前环境的部署
三、CDH6.1.0安装
四、CDH6.1.0的初始化
五、CDH6.1.0的优化
六、CDH6.1.0集群安装
一、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的部署方式:联网安装,离线包安装。
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、每台服务器进行系统环境设置:
①、分别给每台服务器修改主机名:
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 [email protected]:~/.ssh/
# scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
# scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
# scp ~/.ssh/authorized_keys [email protected]:~/.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://
用户名:admin
密码:admin
2、安装步骤:
①、欢迎界面--ACCESS LIENCSE--选择免费版本,完成。
②、再次进入安装步骤(添加源与集群安装agent)
欢迎(继续)
跳过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
2、大内存页设置
大内存页禁用
echo never>/sys/kernel/mm/transparent_hugepage/defrag
echo never>/sys/kernel/mm/transparent_hugepage/enabled
六、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的部署结束,登陆界面进行组建的部署。