CentOS7下完全離線安裝CDH6集群
本文是在CentOS7.5下進行CDH6集群的完全離線部署。CDH5集群與CDH6集群的部署區別比較大,關於CDH5集群的部署請移步:CDH5高可用集群離線部署。
環境准備部分在上一篇文章:安裝CDH6集群之前的環境准備。
說明:本文內容所有操作都是在root用戶下進行的。
文件下載
首先一些安裝CDH6集群的必須文件要先在外網環境先下載好。
Cloudera Manager 6.0.1
CM6 RPM:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/
需要下載該鏈接下的所有RPM文件,由於jdk1.8我在環境准備部分已經手動安裝了,所以可以不用下載RPMS/x86_64/
目錄下的jdk包oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
,但是其他4個rpm包一定要下載,保存到cloudera-repos
目錄下。
ASC文件:https://archive.cloudera.com/cm6/6.0.1/allkeys.asc
同時還需要下載一個asc文件,同樣保存到cloudera-repos
目錄下:
/upload/cloudera-repos/
├── allkeys.asc
├── 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-server-db-2-6.0.1-610811.el7.x86_64.rpm
0 directories, 4 files
MySQL JDBC驅動
要求使用5.1.26以上版本的jdbc驅動,可點擊這里直接下載mysql-connector-java-5.1.47.tar.gz
CDH 6.0.1
CDH6 Parcels:https://archive.cloudera.com/cdh6/6.0.1/parcels/
需要下載CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
和manifest.json
這兩個文件
配置Cloudera Manager yum庫
注意:不要嘗試使用FTP搭建CM的YUM庫!
首先安裝httpd
和createrepo
:yum -y install httpd createrepo
啟動httpd
服務並設置開機自啟動:systemctl start httpd
systemctl enable httpd
然后進入到前面准備好的存放Cloudera Manager RPM包的目錄cloudera-repos
下:cd /upload/cloudera-repos/
生成RPM元數據:createrepo .
[root@cdh601 cloudera-repos]# createrepo .
Spawning worker 0 with 2 pkgs
Spawning worker 1 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
然后將cloudera-repos
目錄移動到httpd的html目錄下:mv cloudera-repos /var/www/html/
確保可以通過瀏覽器查看到這些RPM包:
接着在Cloudera Manager Server主機上創建cm6的repo文件(要把哪個節點作為Cloudera Manager Server節點,就在這個節點上創建repo文件):cd /etc/yum.repos.d
vim cloudera-manager.repo
添加如下內容:
[cloudera-manager]
name=Cloudera Manager 6.0.1
baseurl=http://cdh601/cloudera-repos/
gpgcheck=0
enabled=1
保存,退出,然后執行yum clean all && yum makecache
命令:
安裝Cloudera Manager Server
這一步只需要在CM Server節點上操作。
執行下面的命令:yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
將會需要很多依賴包,所以說還是有必要搭一個局域網內yum源的:
配置本地Parcel存儲庫
Cloudera Manager Server安裝完成后,進入到本地Parcel存儲庫目錄:cd /opt/cloudera/parcel-repo
將第一部分下載的CDH Parcel文件(CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
和manifest.json
)上傳至該目錄下,然后執行命令生成sha文件:sha1sum CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel | awk '{ print $1 }' > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha
然后執行下面的命令修改文件所有者:chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
最終/opt/cloudera/parcel-repo
目錄內容如下:
安裝數據庫
MySQL的安裝在環境准備部分中已經有說明,這里就跳過MySQL安裝了。
數據庫配置
CDH官方給的有一份推薦的MySQL的配置內容:
[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
配置mysql jdbc驅動
從前面下載好的mysql-connector-java-5.1.47.tar.gz
包中解壓出mysql-connector-java-5.1.47-bin.jar
文件,將mysql-connector-java-5.1.47-bin.jar
文件上傳至CM Server節點上的/usr/share/java/
目錄下並重命名為mysql-connector-java.jar
(如果/usr/share/java/
目錄不存在,需要手動創建):tar zxvf mysql-connector-java-5.1.47.tar.gz
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
創建CDH所需要的數據庫
根據所需要安裝的服務參照下表創建對應的數據庫以及數據庫用戶,數據庫必須使用utf8編碼,創建數據庫時要記錄好用戶名及對應密碼:
服務名 | 數據庫名 | 用戶名 |
---|---|---|
Cloudera Manager Server | scm | scm |
Activity Monitor | amon | amon |
Reports Manager | rman | rman |
Hue | hue | hue |
Hive Metastore Server | metastore | hive |
Sentry Server | sentry | sentry |
Cloudera Navigator Audit Server | nav | nav |
Cloudera Navigator Metadata Server | navms | navms |
Oozie | oozie | oozie |
我這里就先創建4個數據庫及對應用戶:
mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.11 sec)
mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
Query OK, 0 rows affected, 1 warning (0.16 sec)
mysql> GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
查看授權是否正確:
mysql> SHOW GRANTS FOR 'scm'@'%';
+----------------------------------------------+
| Grants for scm@% |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'scm'@'%' |
| GRANT ALL PRIVILEGES ON `scm`.* TO 'scm'@'%' |
+----------------------------------------------+
2 rows in set (0.00 sec)
mysql> SHOW GRANTS FOR 'amon'@'%';
+------------------------------------------------+
| Grants for amon@% |
+------------------------------------------------+
| GRANT USAGE ON *.* TO 'amon'@'%' |
| GRANT ALL PRIVILEGES ON `amon`.* TO 'amon'@'%' |
+------------------------------------------------+
2 rows in set (0.00 sec)
mysql> SHOW GRANTS FOR 'rman'@'%';
+------------------------------------------------+
| Grants for rman@% |
+------------------------------------------------+
| GRANT USAGE ON *.* TO 'rman'@'%' |
| GRANT ALL PRIVILEGES ON `rman`.* TO 'rman'@'%' |
+------------------------------------------------+
2 rows in set (0.00 sec)
mysql> SHOW GRANTS FOR 'hive'@'%';
+----------------------------------------------------------+
| Grants for metastore@% |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hive'@'%' |
| GRANT ALL PRIVILEGES ON `metastore`.* TO 'hive'@'%' |
+----------------------------------------------------------+
2 rows in set (0.00 sec)
設置Cloudera Manager 數據庫
Cloudera Manager Server包含一個配置數據庫的腳本。
- mysql數據庫與CM Server是同一台主機
執行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
- mysql數據庫與CM Server不在同一台主機上
執行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h <mysql-host-ip> --scm-host <cm-server-ip> scm scm
安裝CDH節點
啟動Cloudera Manager Server服務
systemctl start cloudera-scm-server
然后等待Cloudera Manager Server啟動,可能需要稍等一會兒,可以通過命令tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
去監控服務啟動狀態。
當看到INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
日志打印出來后,說明服務啟動成功,可以通過瀏覽器訪問Cloudera Manager WEB界面了。
訪問Cloudera Manager WEB界面
打開瀏覽器,訪問地址:http://<server_host>:7180
,默認賬號和密碼都為admin:
歡迎頁面
首先是Cloudera Manager的歡迎頁面,點擊頁面右下角的【繼續】按鈕進行下一步:
接受條款
勾選接受條款,點擊【繼續】進行下一步:
版本選擇
這里我就選擇免費版了:
第二個歡迎界面
選擇版本以后會出現第二個歡迎界面,不過這個是安裝集群的歡迎頁:
選擇主機
這一步是要搜索並選擇用於安裝CDH集群的主機,在主機名稱后面的輸入框中輸入各個節點的hostname,中間使用英文逗號分隔開,然后點擊搜索,在結果列表中勾選要安裝CDH的節點即可:
指定存儲庫
Cloudera Manager Agent
這里選擇自定義,填寫上面使用httpd搭建好的Cloudera Manager YUM 庫URL:
CDH and other software
如果我們之前的【配置本地Parcel存儲庫】步驟操作無誤的話,這里會自動選擇【使用Parcel】,並加載出CDH版本,確認無誤后點擊【繼續】:
JDK安裝選項
這一步驟我就不再勾選安裝JDK了,因為我在環境准備部分已經安裝過了。取消勾選,然后繼續:
SSH登錄配置
用於配置集群主機之間的SSH登錄,填寫root用戶的密碼,根據集群配置填寫合適的【同時安裝數量】值即可:
安裝Agent
到這一步會自動進行節點Agent的安裝,稍等一會兒,即可安裝完成:
安裝Parcels
這一步同樣是自動安裝,分配步驟的速度主要取決於網絡環境,耐心等待即可(我的3台虛擬機性能實在是太差了,這一步等了好久):
主機檢查
等待檢查完成即可:
安裝CDH集群
選擇服務類型
這里我選擇自定義服務,HDFS,Hive,Yarn:
角色分配
CDH會自動給出一個角色分配,如果覺得不合理,我們可以手動調整一下,注意角色分配均衡:
數據庫設置
因為我選擇的服務中只有Hive需要數據庫,故這里只需要配置Hive的metastore數據庫。注意要將mysql的jdbc驅動放到hive metastore主機的/usr/share/java/
目錄下:
到這里CDH集群的安裝基本上就已經完成了,我的虛擬機實在是承受不住了,后續內容等我換個環境再補充~。