目錄
一、CDH介紹
二、CDH6.1.0安裝前環(huán)境的部署
三、CDH6.1.0安裝
四、CDH6.1.0的初始化
五、CDH6.1.0的優(yōu)化
六、CDH6.1.0集群安裝
一、CDH介紹:
CDH(Cloudera's Distribution,including Apache Hadoop).是Haoop眾多分支中的一種大數(shù)據(jù),簡稱CDH,基于最穩(wěn)定版本的Apache Hadoop,有許多補丁、向后移植和更新,Cloudera公司以多種不同的形式進行發(fā)布。包括源碼和二進制tar文件,、RPM等等。CDH是Apche2.0許可下發(fā)布的自由軟件,用戶可以直接從官方https://www.cloudera.com/上獲取。
CDH6.1.0支持如下組件:
| 組件名稱 | 用途 |
|---|---|
| Zookeeper | Apache ZooKeeper 是用于維護和同步配置數(shù)據(jù)的集中服務。 |
| HDFS | HDFS是 Hadoop 應用程序使用的主要存儲系統(tǒng)。 |
| yarn | Apache Hadoop MapReduce 2.0 (MRv2) 或 YARN 是支持 MapReduce 應用程序的數(shù)據(jù)計算框架。依賴HDFS服務。 |
| HBase | 支持隨機讀/寫訪問的Hadoop數(shù)據(jù)庫(HBase是一個分布式、面向列的開源數(shù)據(jù)庫,) |
| Hive | 在大數(shù)據(jù)集合上的類SQL查詢和表。Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務進行運行。 |
| impala | Impala是一個新型查詢系統(tǒng),它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。 |
| solr | Solr是一個分布式服務,用于編制存儲在 HDFS 中的數(shù)據(jù)的索引并搜索這些數(shù)據(jù)。 |
| spark | Spark是強大的開源并行計算引擎,基于內(nèi)存計算,速度更快;接口豐富,易于開發(fā);集成SQL、Streaming、GraphX、MLlib,提供一棧式解決方案。 |
| flume | 高可靠、可配置的數(shù)據(jù)流集合。 |
| storm | Storm是一個分布式的、容錯的實時計算系統(tǒng)。 |
| kafka | Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。 |
| Hue | 可視化Hadoop應用的用戶接口框架和SDK。。 |
| Sqoop | 以高度可擴展的方式跨關(guān)系數(shù)據(jù)庫和HDFS移動數(shù)據(jù) |
| oozie | Oozie是一種框架,是用于hadoop平臺的作業(yè)調(diào)度服務。 |
| Avro | 數(shù)據(jù)序列化:豐富的數(shù)據(jù)結(jié)構(gòu),快速/緊湊的二進制格式和RPC。 |
| Crunch | Java庫,可以更輕松地編寫,測試和運行MR管道。 |
| DataFu | 用于進行大規(guī)模分析的有用統(tǒng)計UDF庫。 |
| Mahout | 用于群集,分類和協(xié)作過濾的庫。 |
| Parquet | 在Hadoop中提供壓縮,高效的列式數(shù)據(jù)表示。 |
| Pig | 提供使用高級語言批量分析大型數(shù)據(jù)集的框架。 |
| MapReduce | 強大的并行數(shù)據(jù)處理框架。 |
| Pig | 數(shù)據(jù)流語言和編譯器 |
| Sqoop | 利用集成到Hadoop的數(shù)據(jù)庫和數(shù)據(jù)倉庫 |
| Sentry | 為Hadoop用戶提供精細支持,基于角色的訪問控制。 |
| Kudu | 完成Hadoop的存儲層,以實現(xiàn)對快速數(shù)據(jù)的快速分析。 |
二、CDH6.1.0安裝前環(huán)境的部署
CDH的部署方式:聯(lián)網(wǎng)安裝,離線包安裝。
1、CM6.1.0以及CDH6.1.0的安裝:
系統(tǒng)環(huán)境:
- 主機規(guī)劃:]
| 主機名 | 角色 | IP地址 | 用途 | 配置 |
|---|---|---|---|---|
| Centos210.com | 主節(jié)點 | 10.18.223.210 | CM、Cloudera Server、mysql | 8C/16G/150G |
| Centos151.com | 從節(jié)點 | 10.18.223.151 | Cloudera Agent | 8C/16G/150G |
| Centos239.com | 從節(jié)點 | 10.18.223.239 | Cloudera Agen | 8C/16G/150G |
| Centos65.com | 從節(jié)點 | 10.17.87.65 | Cloudera Agen | 8C/16G/150G |
PS:主機的內(nèi)存最好在10G以上,才能保證環(huán)境的正常運行。
2、提前下載相關(guān)的RPM安裝包以及封裝的組件的Parcel包。
Cloudera Manager以及相關(guān)依賴環(huán)境、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、在主節(jié)點上配置Cloudera Manager倉庫,便于從節(jié)點的agetn的安裝(添加存儲庫的時候會用到)。
yum -y install httpd createrepo
systemctl start httpd && systemctl enable httpd
cd /var/www/html/cloudera-repos/ && createrepo . #生成RPM元數(shù)據(jù):
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包下載地址(下載與系統(tǒng)匹配的包):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、每臺服務器進行系統(tǒng)環(huán)境設(shè)置:
①、分別給每臺服務器修改主機名:
hostnamectl set-hostname cdh210.com
hostnamectl set-hostname cdh151.com
hostnamectl set-hostname cdh239.com
hostnamectl set-hostname cdh65.com
②、每臺服務器分別把主機名與ip對應關(guān)系寫進/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
③、每臺服務器永久關(guān)閉防火墻、selinux:
systemctl stop firewalld.service #關(guān)閉防火墻
systemctl disable firewalld.service #設(shè)置防火墻關(guān)閉啟動
setenforce 0 #臨時關(guān)閉selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #永久關(guān)閉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
⑥、設(shè)置主節(jié)點服務器免密碼登陸從節(jié)點服務器
# ssh-keygen -t rsa
一路回車,生成無密碼的密鑰對。然后將公鑰添加到認證文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
設(shè)置ahthorized_keys的訪問權(quán)限,并發(fā)送到所有從節(jié)點服務器上
# 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:發(fā)送公鑰到從節(jié)點上,進行ssh訪問,如果需要密碼說明發(fā)送沒成功,有可能是從節(jié)點上沒有創(chuàng)建 ~/.ssh/ 目錄,導致不成功,創(chuàng)建該目錄即可。
⑦、創(chuàng)建/opt/cloudera/parcel-repo/,并將下載的Parcels放到主節(jié)點上的/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、主節(jié)點安裝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、主節(jié)點上按照如下順序進行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、數(shù)據(jù)庫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-設(shè)置密碼-再次設(shè)置密碼-Y-N-Y-Y
4、備份數(shù)據(jù)庫配置文件,并修改數(shù)據(jù)庫的配置。
# 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數(shù)據(jù)庫創(chuàng)建需要用到的庫: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的數(shù)據(jù)庫:
如果數(shù)據(jù)庫和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--選擇免費版本,完成。

②、再次進入安裝步驟(添加源與集群安裝agent)
歡迎(繼續(xù))
跳過Auto-TLS以自動創(chuàng)建證書:(后面配置麻煩,如果不開啟https,可以跳過此項)
添加主機(由于我已經(jīng)進行該主機的添加,因此沒法重復添加):

③、添加存儲:

可以使用Public Cloudera Repo(需要聯(lián)網(wǎng),下載會慢點),
也可以直接使用搭建的存儲庫:http://10.18.223.210/cloudera-repos/
存儲庫的搭建:
備份其他repo,并在各個節(jié)點上創(chuàng)建repo文件:
# mv /etc/yum.repo,d/* /etc/yum.bak/
cd /etc/yum.repo.d/ && vi cloudera-manager.repo
添加如下內(nèi)容:
[cloudera-manager]
name=Cloudera Manager 6.0.1
baseurl=http://10.18.223.210/cloudera-repos/
gpgcheck=0
enabled=1
Parcel的選擇,如果按照要求將下載的Parcels放到主節(jié)點上的/opt/cloudera/parcel-repo/中,會出現(xiàn)CDH6.1.0,如果沒有,點擊更多選項進行查看路徑的選擇。
④JDK的安裝,由于我們在上面已經(jīng)進行JDK的安裝,此步驟直接繼續(xù)(不勾選)。
輸入主機的憑證--自動安裝Agent。(安裝Agent中遇到無法安裝的問題,有可能由于缺少rpm依賴包、主機之間無法通行)--安裝Parcels。
五、CDH6.1.0優(yōu)化:
1、虛擬內(nèi)存設(shè)置
Cloudera 建議將 /proc/sys/vm/swappiness 設(shè)置為 0。當前設(shè)置為 60。使用 sysctl 命令在運行時更改該設(shè)置并編輯 /etc/sysctl.conf 以在重啟后保存該設(shè)置。您可以繼續(xù)進行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機由于交換運行狀況不佳。以下主機受到影響:
永久解決
sysctl -w vm.swappiness=0
echo vm.swappiness = 0 >> /etc/sysctl.conf
2、大內(nèi)存頁設(shè)置
大內(nèi)存頁禁用
echo never>/sys/kernel/mm/transparent_hugepage/defrag
echo never>/sys/kernel/mm/transparent_hugepage/enabled
六、CDH6.1.0集群安裝
1、選擇服型,我的業(yè)務類型選擇了,Operation Database。也可以自定義選擇自己所需要的服務,一般情況下,HDFS Hive Hue Yanr Zookeeper HBase即可滿足要求。

2、角色分配:選擇服務后,CDH會自動給節(jié)點進行角色分配,也可以自定義調(diào)整。

3、數(shù)據(jù)庫設(shè)置,不同組件之間擁有不同的庫,我們在進行數(shù)據(jù)庫安裝的時候已經(jīng)進行數(shù)據(jù)庫的庫的創(chuàng)建,現(xiàn)在輸入進去即可使用。
到此,CDH集群的安裝已經(jīng)基本完成。
如果部署失敗,卸載CDH的環(huán)境重新進行部署。
systemctl stop cloudera-scm-server
systemctl stop cloudera-scm-agent
yum -y remove 'cloudera-manager-*'
yum clean all
到此CDH6.1.0的部署結(jié)束,登陸界面進行組建的部署。