Centos7.6部署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的部署方式:聯網安裝,離線包安裝。

生產環境的磁盤配置要求

  • 系統盤建議做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
/etc/my.cnf
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--選擇免費版本,完成。

 

 

②、再次進入安裝步驟(添加源與集群安裝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
# 然后執行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的部署結束,登陸界面進行組建的部署。
 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM