目錄
一、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公司以多種不同的形式進(jìn)行發(fā)布迷殿。包括源碼和二進(jìn)制tar文件儿礼,、RPM等等庆寺。CDH是Apche2.0許可下發(fā)布的自由軟件蚊夫,用戶可以直接從官方https://www.cloudera.com/上獲取。
CDH6.1.0支持如下組件:
組件名稱 | 用途 |
---|---|
Zookeeper | Apache ZooKeeper 是用于維護(hù)和同步配置數(shù)據(jù)的集中服務(wù)懦尝。 |
HDFS | HDFS是 Hadoop 應(yīng)用程序使用的主要存儲系統(tǒng)知纷。 |
yarn | Apache Hadoop MapReduce 2.0 (MRv2) 或 YARN 是支持 MapReduce 應(yīng)用程序的數(shù)據(jù)計算框架壤圃。依賴HDFS服務(wù)。 |
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任務(wù)進(jìn)行運行模蜡。 |
impala | Impala是一個新型查詢系統(tǒng)漠趁,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)忍疾。 |
solr | Solr是一個分布式服務(wù)闯传,用于編制存儲在 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應(yīng)用的用戶接口框架和SDK蚌本。盔粹。 |
Sqoop | 以高度可擴(kuò)展的方式跨關(guān)系數(shù)據(jù)庫和HDFS移動數(shù)據(jù) |
oozie | Oozie是一種框架,是用于hadoop平臺的作業(yè)調(diào)度服務(wù)程癌。 |
Avro | 數(shù)據(jù)序列化:豐富的數(shù)據(jù)結(jié)構(gòu)舷嗡,快速/緊湊的二進(jìn)制格式和RPC。 |
Crunch | Java庫嵌莉,可以更輕松地編寫进萄,測試和運行MR管道。 |
DataFu | 用于進(jìn)行大規(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用戶提供精細(xì)支持熊杨,基于角色的訪問控制曙旭。 |
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二進(jìn)制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、每臺服務(wù)器進(jìn)行系統(tǒng)環(huán)境設(shè)置:
①躲株、分別給每臺服務(wù)器修改主機名:
hostnamectl set-hostname cdh210.com
hostnamectl set-hostname cdh151.com
hostnamectl set-hostname cdh239.com
hostnamectl set-hostname cdh65.com
②片部、每臺服務(wù)器分別把主機名與ip對應(yīng)關(guān)系寫進(jì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
③霜定、每臺服務(wù)器永久關(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
④廊鸥、每臺服務(wù)器配置ntp服務(wù)望浩,添加時間服務(wù)器,并啟動時間服務(wù)器惰说,開機啟動磨德,寫入硬件時鐘:
#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默認(rèn)安裝python2.7)
# python --version
Python 2.7.5
⑥、設(shè)置主節(jié)點服務(wù)器免密碼登陸從節(jié)點服務(wù)器
# ssh-keygen -t rsa
一路回車典挑,生成無密碼的密鑰對酥宴。然后將公鑰添加到認(rèn)證文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
設(shè)置ahthorized_keys的訪問權(quán)限,并發(fā)送到所有從節(jié)點服務(wù)器上
# 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é)點上您觉,進(jìn)行ssh訪問拙寡,如果需要密碼說明發(fā)送沒成功,有可能是從節(jié)點上沒有創(chuàng)建 ~/.ssh/ 目錄琳水,導(dǎo)致不成功肆糕,創(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私沮,并導(dǎo)入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é)點上按照如下順序進(jìn)行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在一臺服務(wù)器上
···
/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服務(wù):
# systemctl start cloudera-scm-server
四、CDH6.1.0的初始化
1澈灼、登陸CDH6.1.0
http://<server_IP>:7180
用戶名:admin
密碼:admin
2竞川、安裝步驟:
①店溢、歡迎界面--ACCESS LIENCSE--選擇免費版本,完成委乌。
②床牧、再次進(jìn)入安裝步驟(添加源與集群安裝agent)
歡迎(繼續(xù))
跳過Auto-TLS以自動創(chuàng)建證書:(后面配置麻煩,如果不開啟https遭贸,可以跳過此項)
添加主機(由于我已經(jīng)進(jìn)行該主機的添加叠赦,因此沒法重復(fù)添加):
③、添加存儲:
可以使用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册踩,如果沒有,點擊更多選項進(jìn)行查看路徑的選擇效拭。
④JDK的安裝暂吉,由于我們在上面已經(jīng)進(jìn)行JDK的安裝,此步驟直接繼續(xù)(不勾選)缎患。
輸入主機的憑證--自動安裝Agent慕的。(安裝Agent中遇到無法安裝的問題,有可能由于缺少rpm依賴包挤渔、主機之間無法通行)--安裝Parcels肮街。
五、CDH6.1.0優(yōu)化:
1判导、虛擬內(nèi)存設(shè)置
Cloudera 建議將 /proc/sys/vm/swappiness 設(shè)置為 0嫉父。當(dāng)前設(shè)置為 60。使用 sysctl 命令在運行時更改該設(shè)置并編輯 /etc/sysctl.conf 以在重啟后保存該設(shè)置眼刃。您可以繼續(xù)進(jìn)行安裝绕辖,但可能會遇到問題,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è)務(wù)類型選擇了,Operation Database涉茧。也可以自定義選擇自己所需要的服務(wù)赴恨,一般情況下疹娶,HDFS Hive Hue Yanr Zookeeper HBase即可滿足要求伴栓。
2、角色分配:選擇服務(wù)后,CDH會自動給節(jié)點進(jìn)行角色分配钳垮,也可以自定義調(diào)整惑淳。
3、數(shù)據(jù)庫設(shè)置饺窿,不同組件之間擁有不同的庫歧焦,我們在進(jìn)行數(shù)據(jù)庫安裝的時候已經(jīng)進(jìn)行數(shù)據(jù)庫的庫的創(chuàng)建,現(xiàn)在輸入進(jìn)去即可使用肚医。
到此绢馍,CDH集群的安裝已經(jīng)基本完成。
如果部署失敗肠套,卸載CDH的環(huán)境重新進(jìn)行部署舰涌。
systemctl stop cloudera-scm-server
systemctl stop cloudera-scm-agent
yum -y remove 'cloudera-manager-*'
yum clean all
到此CDH6.1.0的部署結(jié)束,登陸界面進(jìn)行組建的部署你稚。