一、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的部署結束,登陸界面進行組建的部署。