本文參考內容:https://blog.csdn.net/u010936936/article/details/81939880
一環境:
centos 7 64位
二軟件下載:
JDK1.8: 下載地址 選擇64位linux
Cloudera Manager:下載地址這裏我選擇的是[cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz]
CDH :下載地址
和上面CM一樣,各取所需。需要下載3個文件,我下載的是 CDH-5.14.4-1.cdh5.14.4.p0.3-el7.parcel.sha1(這個文件下載下來後,一定要把後綴 .sha1 改爲 .sha), CDH-5.14.4-1.cdh5.14.4.p0.3-el7.parcel, manifest.json
一.基礎配置
- 配置網絡:採用Nat方式聯網。
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.80.3
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=202.196.32.1 - 開啓網卡:ifup ens33
- 測試:ping www.baidu.com
- 修改yum源:
1)mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
訪問:https://mirrors.ustc.edu.cn/help/centos.html
把對應版本的內容粘貼進去。
2)vi /etc/yum.repos.d/CentOS-Base.repo
3)yum makecache(用時較長)
3). yum install wget
4). yum install vim
5). yum install openssh-clients
二. 配置JDK
先輸入 java -version 查看是否存在java 如果顯示open java 說明自帶了open java ,我們可以選擇刪除或者覆蓋,網絡上有很多刪除open java的方法,這裏我講述一下覆蓋的方法。
無論是否有java 都進行以下操作:
-
cd /usr
-
mkdir java
-
rz (將JDK包傳到該目錄下)
-
tar -zxvf jdk(按tab鍵自動補全)
-
vim /etc/profile
最後添加環境變量:export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
執行命令 source /etc/profile
-
執行命令 java -version
出現 java version “1.8.0_181”
Java™ SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot™ 64-Bit Server VM (build 25.181-b13, mixed mode)
如果你出現這個請繼續進行下一步,如果還顯示open java 請執行如下命令。
- update-alternatives --display java
(linux中提供了update-alternatives命令,update-alternatives是linux系統(大部分linux系統都支持此命令)中專門維護系統命令鏈接符的工具,通過它可以很方便的設置系統默認使用哪個命令、哪個軟件版本,而所有的這些就構成了備選方案系統(alternatives
system)。很多時候我們會將擁有相同或相似功能的不同應用程序安裝在同一個操作系統上,例如同一個操作系統上的不同文本編輯器。這給了這個系統的用戶在編輯文本時有了更多的選擇,如果用戶願意他們可以自由選擇任意一個來使用。
其實update-alternatives命令的功能很好理解,舉個例子:在Window系統中,如果我們安裝多個瀏覽器,比如有火狐、有IE、有360、有Chrome等,當我們從某個鏈接進去打開網頁時,可能會問你使用哪個瀏覽器,當你選擇某個瀏覽器時,此瀏覽器會問你是否把它作爲默認瀏覽器,如果你選擇了是,那下次點開某個鏈接時,就直接使用默認瀏覽器打開了!
輸出內容
update-alternatives --display java,輸出如下(後面有省略):
java - status is manual.
link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java - priority 170131
slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/keytool
slave orbd: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/orbd
......
可以從輸出中看到系統中java默認使用的OpenJDK,其中數字170131表示優先級。
- 把自己安裝的SunJDK加入到備選系統中
運行命令(注意命令最後的數字表示優先級,其中170130 爲SunJDK的alternative的優先級)
update-alternatives --install /usr/bin/java java /${JAVA_HOME}/bin/java 170130
- 選擇自己安裝的SunJDK作爲首選java命令
運行命令
update-alternatives --config java,輸出如下
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/java/bin/java
Enter to keep the current selection[+], or type selection number:
config命令是交互式的命令,可以根據提示進行選擇,此處我們選擇2,即使用安裝的SunJDK的java命令,然後按回車鍵。
現在再查看java -version會發現java已經改變。
三.克隆
在關機狀態下克隆,並配置網絡
(克隆機器)
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
將UUID刪除,修改IP地址,加入mac地址HWADDR=(爲真的mac地址) - vim /etc/hostname(修改主機名,每臺主機都要做)
注意這裏需要重啓纔可以使hostname修改,但如果是服務器等不方便重啓的設備,輸入
hostname $(cat /etc/hostname)
-
vim /etc/hosts(修改hosts文件,主機修改就行,下面是我的內容)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.11 cdh1
192.168.80.12 cdh2 -
scp /etc/hosts root@cdh2:/etc/(將修改後的hosts文件傳到另外一臺機器上)
傳送過程需要輸入密碼 -
(關閉防火牆)systemctl stop firewalld
systemctl disable firewalld -
重啓機器。然後保證主機之間互ping 主機名,互ping ip能夠ping通
四.禁止交換。(每臺主機都要做)
- 執行命令vim /etc/sysctl.conf
增加一行:vm.swappiness=0 - 執行命令:sudo sysctl vm.swappiness=0
五.禁用大頁面.(每臺主機都要做)
- 執行命令:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 執行命令,修改配置:
vim /etc/rc.local
增加兩行:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 執行命令,賦予權限
chmod +x /etc/rc.d/rc.local
六.配置免密碼登陸(每臺主機都要做)
- 執行命令,生成祕鑰:
ssh-keygen -t rsa
cd ~/.ssh - 拷貝到要免密碼登陸的機器,要免密登陸哪個機器,就寫該機器的ip。這裏我2臺機器兩兩之間都做了免密登陸。
ssh-copy-id xxxx
比如要免密碼登錄192.168.80.12(cdh2),則在cdh1上執行: ssh-copy-id 192.168.80.12
七.ntp服務配置
這裏我提供了兩種配置ntp服務的方法,本地服務器法與ntp服務器法。本步驟可以跳過但在後面cm上可能會報網絡問題,其實是ntp的問題所以這裏儘量配置。
如果在本機上運行,可以直接使用本地ntp服務。
所有節點都執行
- 下載ntp服務
yum –y install ntp
執行命令,修改配置。
vim /etc/ntp.conf
我修改的配置如下,注意第一行配置根據自己centos的網關來配置。
restrict 192.168.80.0 mask 255.255.255.0 nomodify notrap
#Use public servers from the pool.ntp.org project.
#Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
- 執行命令
vim /etc/sysconfig/ntpd
增加一行:
SYNC_HWCLOCK=yes - 重啓ntp服務
systemctl restart ntpd.service
systemctl status ntpd.service
如果在服務器上使用請配置
- 在所有機器上下載ntp服務
yum –y install ntp - 執行命令,修改配置。
請在服務機上修改配置文件。
vim /etc/ntp.conf
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.80.0 mask 255.255.255.0 #允許 192.168.80.0網段中的服務器訪問本ntp服務器進行時間同步
restrict 10.0.0.16 #允許單個IP地址訪問本ntp服務器
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 210.72.145.44 #指定本ntp服務器的上游ntp服務器爲210.72.145.44,並且設置爲首先服務器。同步時間爲:從上到下,寫的越靠上,優先級越高。(此服務器同步不了時間,尋找下一個ntp服務器)。此IP地址是中國國家授時中心ntp服務器。
server 133.100.11.8 #當上面服務器同步不了,則尋找第二個。此IP地址是日本福岡大學ntp服務器。
restrict 210.72.145.44 nomodify notrap noquery #允許上層時間服務器主動修改本機時間
restrict 133.100.11.8 nomodify notrap noquery
server 127.127.1.0 #local clock 如果上面的服務器都無法同步時間,就和本地系統時間同步。127.127.1.0在這裏是一個IP地址,不是網段。
fudge 127.127.1.0 stratum 10 #127.127.1.0 爲第10層。ntp 和127.127.1.0同步完後,就變成了11層。 ntp是層次階級的。同步上層服務器的stratum 大小不能超過或等於16。
保存退出
注意:
server 210.72.145.44 #指定本ntp服務器的上游ntp服務器爲210.72.145.44,並且設置爲首先服務器。同步時間爲:從上到下,寫的越靠上,優先級越高。(此服務器同步不了時間,尋找下一個ntp服務器)。此IP地址是中國國家授時中心ntp服務器。
server 133.100.11.8 #當上面服務器同步不了,則尋找第二個。此IP地址是日本福岡大學ntp服務器。
這兩句是設置ntp服務器的。但由於時間,網絡等原因,這兩個可能不能使用。請在使用前ping 這兩個ip ,查看網絡連通性與時間延時。這裏提供一些常用的ntp服務器,請選擇合適的。
s1a.time.edu.cn 北京郵電大學
s1b.time.edu.cn 清華大學
s1c.time.edu.cn 北京大學
ntp1.aliyun.com 阿里雲
在客戶解上配置
vim /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 192.1968.80.3 #新增行1:你服務端IP地址
- 啓動ntp服務
systemctl start ntpd
查看ntpd服務狀態
指令“ntpq -p”可以列出目前我們的NTP與相關的上層NTP的狀態,以上的幾個字段的意義如下:
remote:即remote - 本機和上層ntp的ip或主機名,“+”表示優先,“*”表示次優先。
refid:參考的上一層NTP主機的地址
st:即stratum階層
poll:下次更新在幾秒之後
offset:時間補償的結果
[root@linl_S ~]# ntpq -p #列出本NTP服務器與上游服務器的連接狀態
remote refid st t when poll reach delay offset jitter
==============================================================================
210.72.145.44 .INIT. 16 u - 64 0 0.000 0.000 0.000
133.100.11.8 .INIT. 16 u - 64 0 0.000 0.000 0.000
*dns1.synet.edu. 202.118.1.47 2 u 32 64 3 60.058 7.261 6.860
news.neu.edu.cn .INIT. 16 u - 64 0 0.000 0.000 0.000
202.118.1.130 .INIT. 16 u - 64 0 0.000 0.000 0.000
42.96.167.209 .INIT. 16 u - 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 96 64 2 0.000 0.000 0.000
[root@linl_S ~]# ntpstat #列出是否與上游服務器連接。需要過5分鐘
synchronised to NTP server (202.112.29.82) at stratum 3 #可以看到我們當前在3層
time correct to within 257 ms #ms 毫秒是一種較爲微小的時間單位,是一秒的千分之一。
polling server every 64 s
-
常見錯誤:如下所示。
其實,這不是一個錯誤。而是由於每次重啓NTP服務器之後大約要3-5分鐘客戶端才能與server建立正常的通訊連接。當此時用客戶端連接服務端就會報這樣的信息。一般等待幾分鐘就可以了。1 [root@linl_C ~]# ntpdate cm1
2 23 May 11:38:02 ntpdate[6694]: no server suitable for synchronization found
八.安裝MySQL。並配置數據庫
爲了方便,把MySQL安裝在主節點Server上,但是注意最好別用太高版本的MySQL。這裏安裝的是MySQL5.7
- 檢測是否有mariadb
rpm -qa | grep mariadb
如果有,就卸載
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 - 開始安裝,依次執行命令,根據提示信息操作
cd /usr/local/src
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
如果下載速度過慢這裏有一些辦法。
查看mysql依賴關係rpm包 依賴關係爲
common→libs→client→server
進入清華大學開源鏡像網站:網站
選擇需要的版本,這裏選擇:5.7.26
下載:全部的依賴包
mysql-community-common-5.7.26-1.el7.x86_64.rpm
mysql-community-libs-5.7.26-1.el7.x86_64.rpm
mysql-community-client-5.7.26-1.el7.x86_64.rpm
mysql-community-server-5.7.26-1.el7.x86_64.rpm
並輸入以下命令安裝
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
這裏完成了安裝mysql ,但在cm安裝時會發生錯誤:
通過查看日誌:tail -f 300 /opt/cloudera-manager/cm-5.14.1/log/cloudera-scm-server/cloudera-scm-server.log
Error loading MySQLdb module: libmysqlclient.so.18: cannot open
shared object file: No such file or directory
解決辦法:
下載mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
其他版本請自行再 這裏查找下載
rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
-
MySql取消密碼強度驗證功能
修改MySql配置文件(my.cnf)
一般情況下,MySql的配置文件 my.cnf 會在 /etc/ 目錄下,如果沒有,可以使用以下命令查找位置:
find / -name my.cnf
編輯配置文件:
vim /etc/my.cnf
在文件末尾添加以下內容:
plugin-load=validate_password.so
validate-password=OFF
保存退出 -
開啓MySQL:
systemctl start mysqld.service -
查看默認密碼
grep “password” /var/log/mysqld.log -
使用默認密碼登陸:
mysql -u root -p -
進入命令行後,首先修改密碼
alter user ‘root’@‘localhost’ identified by ‘Root!!2018’; -
然後進行創建用戶,授權等操作
grant all on . to ‘root’@’%’ identified by ‘Root!!2018’ with grant option;-- 授權
CREATE USER ‘scm’@’%’ IDENTIFIED BY ‘Root!!2018’;–創建一個新用戶,就使用這個用戶名,和密碼,後面cm的元數據庫會用到
grant all on . to ‘scm’@’%’ identified by ‘Root!!2018’ with grant option;-- 授權
CREATE USER ‘lpy’@’%’ IDENTIFIED BY ‘Root!!2018’; --創建一個新用戶,用戶名和密碼可以自定義,後面安裝hive,oozie會用到
grant all on . to ‘lpy’@’%’ identified by ‘Root!!2018’ with grant option;–授權
flush privileges; – 刷新權限 -
用上面自定義的數據庫用戶lpy登陸,在MySQL中創建幾個數據庫備用,數據庫名稱可以自定義。
mysql -u lpy -p
create database hive;
create database hue;
create database ooz; -
使用scm用戶登錄MySQL,創建scm數據庫備用。
mysql -u scm -p
create database scm;
九.開始安裝CM和CDH
-
在所有節點執行命令,創建目錄:
sudo mkdir /opt/cloudera-manager -
在所有節點,將下載好的cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz文件,上傳到/opt目錄下(用rz命令)
-
在所有節點,解壓該文件到/opt/cloudera-manager目錄。
tar -zxvf /opt/cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz -C /opt/cloudera-manager
qkw;dkw4. w在所有節點,創建用戶,這是CM需要使用的用戶
sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm -
在主節點,創建CM服務本地數據存放目錄,並賦予權限
sudo mkdir /var/lib/cloudera-scm-server
sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server -
在所有節點,執行命令:
vim /opt/cloudera-manager/cm-5.14.0/etc/cloudera-scm-agent/config.ini
修改server_host爲server節點的主機名,我的就是server_host=cdh1 -
在所有節點,將上面準備好的數據庫驅動上傳到/usr/share/java目錄下
-
在主節點上執行命令。初始化數據庫scm。mysql scm scm scm分別代表:數據庫類型 database名稱 數據庫用戶名 數據庫密碼
/opt/cloudera-manager/cm-5.14.0/share/cmf/schema/scm_prepare_database.sh mysql scm scm Root!!2018
如果出現如下提示,則證明CM元數據創建成功。
All done, your SCM database is configured correctly! -
在主節點執行,創建CDH文件存放目錄。
mkdir /opt/cloudera/
cd /opt/cloudera
mkdir parcel-repo -
將上面準備好的CDH的3個文件,上傳至/opt/cloudera/parcel-repo路徑下。
-
在主節點,啓動CM server
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-server start -
在所有節點,啓動CM agent
/opt/cloudera-manager/cm-5.14.0/etc/init.d/cloudera-scm-agent start -
稍等一會,訪問地址:serverip:7180
例如:192.168.80.11:7180
十.CM的web配置問題
- 訪問web頁面,如192.168.80.11:7180
出現如下界面:
輸入賬號admin密碼admin
登陸
選擇 免費版。
選擇主機
.安裝parcel包,這裏一定要注意選擇自己下載的CDH包的版本,如果選錯了,那就要走網絡下載
5.然後就是的分發parcel包,解壓激活了,等待自動完成。
6.主機檢查
可以直接下一步