CDH 6.1.1完全離線安裝分享

前言

這個blog我是在火車上寫的,寫了2個多小時,中間如果有任何不明白的地方,請給我留言或者給我發郵件 [email protected] ,我看到了一定回,因爲我來來回回弄了好久,剛開始直接通過hadoop原生安裝,安裝完成之後,又重新安裝的CDH,因爲CDH確實還是方便很多,可以直接web上監控服務器狀態信息,添加主機,停服務都很方便,一個多星期的努力全在這篇blog上,有任何不對的地方,請指正,不能誤人子弟。這篇僅供參考,最好的文檔永遠是官網,當然,官網有時候也出錯,那就看你自己解決問題的能力了。

說明

  1. 安裝系統,本blog繼續純淨版CenteOS 7系統。具體版本爲:CentOS-7-x86_64-Minimal-1810.iso,官網下載。
  2. 安裝集羣爲全內網環境,安裝文件通過U盤拷貝,且文件不能通過U盤考到外網環境。
  3. 我裝的9臺機器作爲CDH集羣,全爲虛擬機環境,真機(配置:128G內存,32核CPU,硬盤10TB)通過ESXI 6.7虛擬兩臺機器,9臺均爲相同配置虛擬機。8臺作爲CDH集羣,一臺作爲應用服務器。
  4. CDH 版本爲6.1.1官網下載。
  5. 準備一臺可以聯網的機器,安裝一個虛擬機,裝上相同的操作系統,爲了下依賴用。

安裝步驟

一、虛擬機IP配置

具體網卡名稱通過 ip addr 查看,ifcfg-* 中的* 表示網卡名稱

vi /etc/sysconfig/netwok-scripts/ifcfg-*

內網機器,配置靜態IP,需要添加或者修改的配置如下:

IPADDR=0.0.0.0				# 機器IP地址
NETMASK=255.255.255.0		# 機器子網掩碼
GATEWAY=0.0.0.0				# 機器網關
ONBOOT=yes					
BOOTPROTO=static			# 機器IP地址獲取方式,static 或者 dhcp

重啓network

service network restart

檢測是否能ping通其他內網機器,若無法ping通,查看ESXI配置,是否是橋接模式且宿主機器網絡是否聯通。

二、配置hostname

CDH要求集羣中的機器的hostname滿足FQDN(Fully Qualified Domain Name)命名規範,如 node01.example.com

hostnamectl set-hostname node01.example.com

查看主機名稱

hostname

強烈建議在執行特殊操作之前,確認主機名稱,因爲當主機過多之後,可能由於當前主機SSH 登陸其他機器,從而命令在其他機器上執行,導致錯誤。

三、配置hosts

配置hosts的目的在於CDH能夠通過主機名稱或者別名登陸其他機器。

vi /etc/hosts

具體配置如

1.1.1.1 foo-1.example.com foo-1 
2.2.2.2 foo-2.example.com foo-2 
3.3.3.3 foo-3.example.com foo-3 
4.4.4.4 foo-4.example.com foo-4

四、禁用防火牆

CDH運行過程中,可能會因爲防火牆的原因,會有特殊的問題,建議關閉防火牆,如果不能關閉,那需要逐條配置端口規則。

systemctl stop firewalld		# 停止防火牆
systemctl disable firewalld 	# 禁用防火牆

五、卸載mariadb軟件

mariadb 是centeOS 7 自帶的數據庫,這裏卸載是因爲會跟mysql的部分功能產生衝突,如果你的CM的管理要用mariadb 或者已經安裝了其他的數據庫軟件,那麼這步跳過,且下文的數據庫配置部分嚴格按照官網(https://www.cloudera.com/documentation/enterprise/6/latest/topics/installation.html )的要求完成。

rpm -qa |grep mariadb		# 檢查是否安裝了mariadb
yum remove mariadb*			# 卸載mariadb

六、禁用SELinux功能

首先查看 SELinux功能是否開啓

getenforce

如果顯示Permissive 或者 Disabled 該步驟直接跳過,如果是enforcing ,進行下一步

vi /etc/selinux/config 或者 vi /etc/sysconfig/selinux

設置 SELINUX=enforcing 爲 SELINUX=permissive

setenforce 0 			# 讓設置生效

七、配置SSH 登陸端口

如果服務器採用 默認22 端口,則該步驟跳過,如果需要修改,則

vi /etc/ssh/sshd_conf 			#我寫這篇文章的時候,正在火車上,這個地方的文件名稱有點忘記了,是一個sshd開頭的配置文件,直接sshd+tab可以出來

將 #Port 22 修改爲 Port 你要的端口, #號去掉
重啓sshd 服務

systemctl restart sshd

八、安裝軟件

這個地方是離線安裝CDH的重點,也是難點,因爲離線安裝,依賴文件太多太多,導致安裝很困難,這個告訴你們一個高效的獲取rpm的方式。 自己找一臺可以聯網的機器,安裝一個虛擬機,裝上相同的操作系統,什麼其他的軟件都不要安裝,如果你的內網環境rpm的時候,需要什麼依賴,你就直接在可以聯網的機器上執行,執行的命令爲:

yum -install --downloadonly --downloaddir=./你的軟件 你的軟件

然後就會只下載,不安裝,通過U盤拷貝到內網環境 執行

rpm -ivh ./*.rpm --nodeps --force

這條命令中 --nodeps 是不檢查依賴 --force是覆蓋安裝,安裝即可。
我把需要的軟件都下載下來了,如果想免去麻煩,就在 這裏 下載,可能有點大(這個C幣不知道咋回事,自動需要的,如果沒有C幣,給我發郵件,我傳給你)。下完之後,挨個文件夾執行也行,拷到一個文件夾,一次性執行也行,記得加上 --nodeps --force

九、所有的機器都相同的安裝

將上面的步驟,安裝到所有的集羣機器上

十、配置時鐘同步

CDH集羣的所有機器都需要時鐘同步,時間差距需要在10分鐘以內。在集羣中找一臺機器當時鍾同步的server ,其他機器直接從這個server上同步時間。

1、server服務器配置

修改系統時間

timedatectl set-ntp no 						# 關閉ntp
timedatectl set-time "2018-07-05 15:06:00"	# 設置時間
timedatectl set-timezone Asia/Shanghai		# 設置時區
date										# 查看配置是否正確

配置時鐘同步server

vi /etc/ntp.conf

對應修改

restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap     # 允許內網其他機器同步時間
server 127.127.1.0     #外部時間服務器不可用時,以本地時間作爲時間服務
fudge  127.127.1.0 stratum 10

如果對上面的配置有疑問,可以自行百度查詢,因爲我也是百度的。
重啓ntp 服務

service ntpd restart

關閉chronyd服務

systemctl disable chronyd.service

設置開機啓動

systemctl enable ntpd.service 

同步時間

ntpstat

查看ntp服務的狀態是否正確

systemctl status ntpd.service

至此,ntp的server配置完成

2、client 服務配置

vi /etc/ntp.conf

對應修改

server 10.121.2.106  #<--該IP是NTP主機端的IP
restrict  10.121.2.106  nomodify notrap noquery   # 允許上層時間服務器主動修改本機時間

執行

ntpdate -u 10.121.2.106					# 強制同步時間
service ntpd restart					# 重啓時鐘同步服務
systemctl disable chronyd.service		# 禁用chronyd服務
systemctl enable ntpd.service			# 開機啓動
ntpstat									# 查看同步狀態

如果同步狀態展示中,顯示了ntp server的信息,表示同步成功,如果沒有,那就等一會兒再執行看看

十一、配置 repos服務

CDH中 CM服務和CDH服務都需要很多很多的相關依賴,一共有5個G左右,具體我就不上傳了,你們可以通過官網(https://www.cloudera.com/documentation/enterprise/6/latest/topics/cm_ig_create_local_parcel_repo.html )自己找,CM的安裝通過自建rpm的庫,而CDH組建,我這裏也是自建rpm庫的方式,如果你要通過peral的方式安裝,也可以,官方很支持,請查看官網自己建立,我這裏只講自建rpm庫的方式。

1、下載

怎麼下載?通過可以聯網的機器下載

mkdir -p /var/www/html/cloudera-repos
wget https://archive.cloudera.com/cm6/6.1.1/allkeys.asc -P /var/www/html/cloudera-repos/cm6/6.1.1/
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/gplextras6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cm6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos

2、拷貝到一臺網路環境比較好的機器上

將cloudera-repos文件夾,打包拷到內網環境中,因爲大小超過4G ,所以可以採用壓縮軟件分包或者直接用一個NTFS格式的U盤。

3、解壓縮,建立rpm包服務器

cd到 cloudera-repos 同級目錄

python -m SimpleHTTPServer 8900

這裏就是一個臨時的服務,安裝完成之後CDH所有組件之後,可以ctrl + c 就停止了。

4、每臺機器上都配置repo源

刪除CenteOS 自帶的源,因爲你無法訪問外網,不刪除會報錯

rm -rf /etc/yum.repos.d/Centos*
vi /etc/yum.repos.d/cloudera-repo.repo

添加

[cloudera-repo]
name=cloudera-repo
baseurl=http://127.0.0.1:8900/cloudera-repos/cm6/6.1.1/redhat7/yum/
enabled=1
gpgcheck=0 

裏面的IP對應的是你的rpm包的服務器ip

在添加一個CDH組件的包源

vi /etc/yum.repos.d/cloudera-repo-cdh.repo
cloudera-repo-cdh]
name=cloudera-repo-cdh
baseurl=http://127.0.0.1:8900/cloudera-repos/cdh6/6.1.1/redhat7/yum/
enabled=1
gpgcheck=0

清理 repos 源

yum clean all

自此,所有的配置都已經結束,開始安裝!!!!

CM的安裝就找集羣裏面的一臺機器安裝,成功之後,通過web頁面可以可視化的自動把集羣中其他機器安裝CM服務和CDH組件。

十二、安裝JDK

yum install oracle-j2sdk1.8

配置環境變量
這裏我就不說了,建議配置在 /etc/profile 裏面

source /etc/profile #讓配置生效

十三、 安裝Cloudera Manager Server

yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

這裏有幾個G的文件,萬兆內網交換機的話,也很快的。主要是agent的依賴多,如果你不安裝上面的依賴,就要在這裏停留好長時間

由於你們站在我的肩膀上,這一步估計也就1分鐘左右吧。

十四、安裝數據庫

強烈建議根據官網https://www.cloudera.com/documentation/enterprise/6/latest/topics/cm_ig_installing_configuring_dbs.html 對照安裝

如果安裝5.7的mysql ,請往下看,如果不是,請移步官網,裝好了在回來看十五。

1、外網環境上下載MySQL 的rpm包

下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

mysql依賴net-tool ,如果你在上面安裝了我的依賴的話,那可以直接裝,如果沒有,那要自己下了之後安裝net-tool

2、安裝

安裝 common 包,安裝 lib* 包,安裝 client 包,安裝server 包。注意順序,其他rpm不用安裝,如果一定要裝的話,可能需要其他的依賴。這裏rpm包不用加 --nodeps --force 了,正常 rpm -ivh *.rpm 就可。

3、配置

我這的配置 是cloudera 的官方配置,但是log-error 這一行我修改了位置,放到了mysqld 裏面,因爲不放在這裏面,不會寫日誌,查看不了初始密碼,很坑。

vi /etc/my.cnf
[mysqld]
# cloudera官網的推薦配置中,log-error是放在mysqld-safe模塊中,不對,日誌不會打印,至少5.7是這樣
log-error=/var/log/mysqld.log
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]

pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

4、啓動並修改密碼

#啓動MySQL
systemctl start mysqld
#查看初始密碼
grep 'temporary password' /var/log/mysqld.log
#通過初始密碼登陸
mysql -uroot -p
#修改root用戶的密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

注意mysql的密碼需要大小寫,數字,字符,不然不通過。

5、新建cloudera manager 需要的用戶和庫

直接執行就好

# 爲 Cloudera Software 創建數據庫
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'MyNewPass4!.';

6、安裝mysql的JDBC驅動

我的依賴包中有 一個mysql-connector-java-5.1.47.tar.gz(如果你沒下載我的依賴包,就自己在官網上找一個,很簡單),找一個位置,執行

tar zxvf mysql-connector-java-5.1.47.tar.gz 
mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.47
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar

自此 ,數據庫的安裝工作結束

十五、運行cloudera腳本

運行下面的腳本,告訴cloudera 你建立的數據庫用戶密碼等信息

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql amon amon MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql rman rman MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql hue hue MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql metastore metastore MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql sentry sentry MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql nav nav MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql navms navms MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql oozie oozie MyNewPass4!.

十六、啓動Cloudera Manager Server

systemctl start cloudera-scm-server

啓動需要一點時間,可以通過日誌,查看進度

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

啓動成功之後 訪問http://<server_host>:7180
用戶名和密碼都是admin

自此,CM的安裝結束,剩下就可視化安裝CDH了了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章