CDH 6.1.1完全離線安裝分享
前言
這個blog我是在火車上寫的,寫了2個多小時,中間如果有任何不明白的地方,請給我留言或者給我發郵件 [email protected] ,我看到了一定回,因爲我來來回回弄了好久,剛開始直接通過hadoop原生安裝,安裝完成之後,又重新安裝的CDH,因爲CDH確實還是方便很多,可以直接web上監控服務器狀態信息,添加主機,停服務都很方便,一個多星期的努力全在這篇blog上,有任何不對的地方,請指正,不能誤人子弟。這篇僅供參考,最好的文檔永遠是官網,當然,官網有時候也出錯,那就看你自己解決問題的能力了。
說明
- 安裝系統,本blog繼續純淨版CenteOS 7系統。具體版本爲:CentOS-7-x86_64-Minimal-1810.iso,官網下載。
- 安裝集羣爲全內網環境,安裝文件通過U盤拷貝,且文件不能通過U盤考到外網環境。
- 我裝的9臺機器作爲CDH集羣,全爲虛擬機環境,真機(配置:128G內存,32核CPU,硬盤10TB)通過ESXI 6.7虛擬兩臺機器,9臺均爲相同配置虛擬機。8臺作爲CDH集羣,一臺作爲應用服務器。
- CDH 版本爲6.1.1官網下載。
- 準備一臺可以聯網的機器,安裝一個虛擬機,裝上相同的操作系統,爲了下依賴用。
安裝步驟
一、虛擬機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了了。