一、概念介紹
1、CDH 概覽
CDH是Apache Hadoop和相關項目的最完整、最受測試和最流行的發行版。CDH提供Hadoop的核心元素-可伸縮存儲和分布式計算-以及基於web的用戶界面和重要的企業功能。CDH是Apache許可的開放源碼,是唯一提供統一批處理、交互式SQL和交互式搜索以及基於角色的訪問控制的Hadoop解決方案。
CDH 提供以下特性:
- 靈活性:存儲任何類型的數據並使用各種不同的計算框架進行操作,包括批處理、交互式SQL、免費文本搜索、機器學習和統計計算。
- 集成:在一個完整的Hadoop平台上快速啟動和運行,該平台與廣泛的硬件和軟件解決方案一起工作。
- 安全:處理和控制敏感數據。
- 可伸縮性:啟用廣泛的應用程序和規模,並擴展它們以滿足您的需求。
- 高可用性:滿懷信心地執行任務關鍵的業務任務。
- 兼容性:利用您現有的IT基礎設施和投資。
CDH 組件如下圖:
2、Cloudera Manager 概覽
Cloudera Manager 是用於管理cdh集群的端到端應用程序。Cloudera Manager通過向CDH集群的每個部分提供細粒度的可見性並對其進行控制來設置企業部署標准-授權運營商提高性能、提高服務質量、提高遵從性和降低管理成本。使用Cloudera Manager,您可以輕松地部署和集中操作完整的CDH堆棧和其他托管服務。應用程序自動化安裝過程,將部署時間從數周減少到分鍾;為您提供在集群范圍內運行主機和服務的實時視圖;提供一個單一的中央控制台來執行整個集群的配置更改;並集成各種報告和診斷工具,以幫助您進行操作。
Cloudera Manager 的架構如上圖所示(cs結構),主要由如下幾部分組成:
-
服務端/Server:
Cloudera Manager 的核心。主要用於管理 web server 和應用邏輯。它用於安裝軟件,配置,開始和停止服務,以及管理服務運行的集群。 -
代理/agent:
安裝在每台主機上。它負責啟動和停止的進程,部署配置,觸發安裝和監控主機。 -
數據庫/Database:
存儲配置和監控信息。通常可以在一個或多個數據庫服務器上運行的多個邏輯數據庫。例如,所述的 Cloudera 管理器服務和監視,后台程序使用不同的邏輯數據庫。 -
Cloudera Repository:由cloudera manager 提供的軟件分發庫。
-
客戶端/Clients:
提供了一個與 Server 交互的接口。
Cloudera Manager包括server端和agent;server端主要作用是監控集群分發配置集群等,agent端主管集群各節點。
CDH是CM的安裝包,本地或者雲端,其中包括hadoop的生態系統需要的所有組件,通過Cloudera Manager統一管理和安裝。
CDH除了可以通過cm安裝也可以通過yum,tar,rpm安裝。
二、環境准備
1、軟件版本選擇
類目 | 版本 | 下載地址 |
---|---|---|
操作系統 | CentOS Linux release 7.5.1804 (Core) | 使用阿里雲鏡像下載 |
數據庫 | 5.5.60-MariaDB | yum源安裝 |
JDK | jdk-8u162-linux-x64.rpm | Oracle 官網下載 |
Cloudera Manager | Cloudera Manager 6.0.1 | 官方倉庫 |
CDH | CDH 6.0.1 | 使用parcels安裝 |
2、節點准備(四個節點)
名稱 | IP | CM管理軟件 |
---|---|---|
namenode01.wzlinux.com | 172.18.8.200 | Cloudera Manager Server&Agent ,MariaDB |
datanode01.wzlinux.com | 172.18.8.201 | Cloudera Manager Agent |
datanode02.wzlinux.com | 172.18.8.202 | Cloudera Manager Agent |
datanode03.wzlinux.com | 172.18.8.203 | Cloudera Manager Agent |
3、配置主機名和hosts解析(所有節點)
編輯/etc/hostname
,修改主機名,並使用命令hostname
使其立刻生效。
編輯文件/etc/hosts
,增加如下內容。
172.18.8.200 namenode01.wzlinux.com namenode01
172.18.8.201 datanode01.wzlinux.com datanode01
172.18.8.202 datanode02.wzlinux.com datanode02
172.18.8.203 datanode03.wzlinux.com datanode03
4、關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
5、關閉SELinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0
6、添加定時任務
echo "$((RANDOM%60)) $((RANDOM%24)) * * * /usr/sbin/ntpdate time1.aliyun.com" >> /var/spool/cron/root
7、禁用透明大頁面壓縮
CDH配置需要
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
並將上面的兩條命令寫入開機自啟動/etc/rc.local
。
8、優化交換分區
echo "vm.swappiness = 10" >> /etc/sysctl.conf
sysctl -p
三、安裝 CM 和 CDH
1、配置 Cloudera Manager 倉庫(所有節點)
wget https://archive.cloudera.com/cm6/6.0.1/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
使用倉庫安裝會比較慢,建議先把需要的rpm下載下來,進行離線安裝或者建私有倉庫,主要下面的三個軟件包:
cloudera-manager-agent-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-daemons-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-server-6.0.1-610811.el7.x86_64.rpm
cloudera-manager-daemons
是 server
和 agent
必須安裝的。
2、配置 JDK (所有節點)
rpm -ivh jdk-8u162-linux-x64.rpm
3、安裝 CM Server 和 Agent
建議離線安裝,把rpm包下載到服務器上面,傳到其他節點一份,再本地安裝,速度會快很多。
- namenode01:
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
- datanode0[1-3]:
yum install cloudera-manager-daemons cloudera-manager-agent
4、安裝數據庫(namenode01)
我們這里現在 CentOS 7.5 自帶的 MariaDB,版本是支持的。
yum install mariadb-server -y
編輯配置文件/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
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
key_buffer = 16M
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 MariaDB, if you enable the binary log and do not set
#a server_id, MariaDB 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/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
打開數據庫
systemctl enable mariadb
systemctl start mariadb
初始化數據庫
/usr/bin/mysql_secure_installation
按照下面提示輸入。
[...]
Enter current password for root (enter for none):
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] Y
New password:
Re-enter new password:
[...]
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
[...]
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
4、安裝 MySQL JDBC 驅動(所有節點)
用於各節點連接數據庫。
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar xf 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
5、為 Cloudera 各軟件創建數據庫
使用root登陸數據庫,創建以下數據庫和賬號。
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'wzlinux';
6、設置 Cloudera Manager 數據庫
[root@namenode01 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
Enter SCM password:
JAVA_HOME=/usr/java/jdk1.8.0_162
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_162/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!
7、安裝 CDH
配置CDH的軟件包 parcels(namenode01)
CM安裝成功之后,接下來我們就可以通過CM安裝CDH的方式構建企業大數據平台。所以首先需要把CDH的parcels包下載到CM主服務器上。
同樣的,我們為了加速我們的安裝,我們可以把需要下載的軟件包提前下載下來,也可以創建CDH私有倉庫。
[root@namenode01 ~]# cd /opt/cloudera/parcel-repo
wget https://archive.cloudera.com/cdh6/6.0.1/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
wget https://archive.cloudera.com/cdh6/6.0.1/parcels/manifest.json
在manifest.json文件中,找到對應版本的秘鑰,復制到.sha文件中。
echo "2e650f1f1ea020a3efc98a231b85c2df1a50b030" > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha
修改屬主屬組。
chown cloudera-scm.cloudera-scm /opt/cloudera/parcel-repo/*
啟動 Cloudera Manager Server
[root@namenode01 ~]# systemctl start cloudera-scm-server
如果啟動中有什么問題,可以查看日志。
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
在最后顯示的日志中,有顯示啟動監聽的端口。
Started ServerConnector@da518cb{SSL,[ssl, http/1.1]}{0.0.0.0:7183}
Started ServerConnector@a77165b{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
四、初始化 Cloudera Manager
瀏覽器打開http://172.18.8.200:7183
,用戶名和密碼默認都是admin
。
接收許可。
這里我們選擇免費版,收費版請自行選擇。
五、集群安裝
指定要添加的節點。
選擇存儲庫,之前我們已經在 CM Server 節點配置好了。
不進行勾選,選擇我們自己安裝的 JDK。
提供 SSH 登錄憑據。
安裝 agents,因為之前我們已經安裝了,所以這里速度會很快。
安裝選定的Parcel,之前我們已經下載好,並配置好放在的 CM Server 節點的/opt/cloudera/parcel-repo
。
檢查主機正確性。
六、集群設置
選擇要安裝的服務,可以根據自己的需求進行軟件安裝。
自定義角色分配。
數據庫設置。
審核更改,如果有特定目錄的設定或者參數的設定,可以在這里進行更正。
首次運行。
安裝完成。
七、管理集群
首頁Dashboard。
HDFS。
HBase。
安裝參考文檔:https://www.cloudera.com/documentation/enterprise/6/latest/topics/installation.html