Cloudera Manager安裝 & 搭建CDH叢集

liang墨竹發表於2020-04-05

簡介

由於Hadoop深受客戶歡迎,許多公司都推出了各自版本的Hadoop,也有些公司則圍繞Hadoop開發產品。在Hadoop生態系統中,規模最大、知名度最高的公司則是Cloudera。

Cloudera由來自Facebook谷歌和雅虎的前工程師傑夫·哈默巴切(Jeff Hammerbacher)、克里斯托弗·比塞格利亞(Christophe Bisciglia)、埃姆·阿瓦達拉(Amr Awadallah)以及現任CEO、甲骨文前高管邁克·奧爾森(Mike Olson)在2008年建立。

關於CDH和Cloudera Manager

CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並整合了很多補丁,可直接用於生產環境。

Cloudera Manager則是為了便於在叢集中進行Hadoop等大資料處理相關的服務安裝和監控管理的元件,對叢集中主機、Hadoop、Hive、Spark等服務的安裝配置管理做了極大簡化。

參考文件:

https://www.cnblogs.com/haozhengfei/p/d90e8f4da465036fabbb1d1e1eae886a.html

https://www.cnblogs.com/fujiangong/p/5620050.html

系統環境

 

 

  • 實驗環境:Win7環境下VMware虛擬機器
  • 作業系統:CentOS 7.2 x64

1、網路配置 

vi /etc/sysconfig/network  

vi /etc/hosts (所有節點)

2、SSH免金鑰登入

  1. 虛擬機器的環境準備非常重要:免金鑰的master需要和slave免金鑰;那麼cloudera manager的server需要和agent免金鑰;
  2. 那麼具體的軟體比如hdfs的namenode所在的節點就需要和它的datanode節點免金鑰;

全部會話 :[root@master ~] # ssh slave01  --> yes --> (輸入密碼) --> exit (退出)

[root@master ~] # cd ./.ssh

[root@master ~] # ssh-keygen -t rsa 

[root@master ~] # ssh-copy-id slave01/slave02/slave03

3、防火牆關閉

service firewalld stop

chkconfig firewalld off

4、SELINUX關閉 setenforce 0

vi /etc/selinux/config ( SELINUX=disabled ) 

5.安裝JDK配置環境變數

export JAVA_HOME=/usr/local/software/jdk1.7.0_79  //注意java的路徑

export PATH=JAVAHOME/bin:PATH

三臺機器都需要;

6. 安裝NTP (所有節點)

yum install ntp -y

 設定開機啟動 :chkconfig ntpd on

設定時間同步 : ntpdate -u s2c.time.edu.cn(全部會話)

7. 安裝配置mysql (Master Namenode)

https://blog.csdn.net/oschina_41140683/article/details/80613819

https://mp.csdn.net/postedit/80793547

8. 安裝說明

官方參考文件:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#concept_jpd_hpz_jdb

9. 軟體下載

Cloudera Manager下載地址:
http://archive.cloudera.com/cm5/cm/5/

Download : cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz

CDH安裝包地址:http://archive.cloudera.com/cdh5/parcels/

Download Files:

  • CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel
  • CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha1
  • manifest.json

 開始安裝CDH

1. 安裝Cloudera Manager Server、Agent

將軟體包上傳到/usr/local/src目錄 (所有機器都要安裝)

mkdir /opt/cloudera-manager
chmod -R 777 /opt/cloudera-manager
tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager

注意:mysql-connector-java-xxx.jar包上傳至master節點(server節點);

 cp ./mysql-connector-java.jar /opt/cloudera-manager/cm-5.15.0/share/cmf/lib/
# ls /usr/local/src
    CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel
    CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha1
    manifest.json
    cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
    mysql-connector-java-*.*.*.jar
mv ./cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz /opt/cloudera-manager

# tar zxvf cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz -C /opt/cloudera-manager/
# ls /opt/cloudera-manager/
    cloudera  cm-5.15.0

2、建立使用者(所有會話/節點)

#useradd --system --home=/opt/cm-5.15.0/run/cloudera-scm-server  --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

3. 配置CM Agent

vi  /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini

server_host=master  或者 server_host=192.168.1.100 (所有機器)

4. 配置CM Server資料庫

# mysql -uroot -p
Enter password:          \\輸入資料庫密碼
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.47-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
sql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

sql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

sql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

sql> create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

sql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

sql> grant all on *.* to root@"%" Identified by "root";
Query OK, 0 rows affected (0.00 sec)

sql> exit

初始化CM資料庫 :

#########主節點執行########
> /opt/cloudera-manager/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm

#### 格式:./scm_prepare_database.sh 資料庫型別、資料庫、資料庫伺服器、使用者名稱、密碼、cm server伺服器

Console日誌:(成功!)

JAVA_HOME=/usr/local/jdk1.7.0_79
Verifying that we can write to /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-server
Creating SCM configuration file in /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-server
Executing:  /usr/java/jdk1.7.0_79/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cloudera-manager/cm-5.15.0/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
2018-08-17 13:32:20,562 [main] INFO  com.cloudera.enterprise.dbutil.DbCommandExecutor  - Successfully connected to database.
All done, your SCM database is configured correctly!

 

5. 建立Parcel目錄

  • 建立parcel目錄,此目錄是server和agent用來接收和傳送資料的目錄,server端的parcel-repo目錄會把所有的安裝檔案全部下載到此目錄;
  • Agent也需要安裝包,parcels就是用來儲存指定的安裝包的,當然需要有許可權能操作這些目錄;

Server節點

 – mkdir -p /opt/cloudera/parcel-repo

– chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo

Agent節點

– mkdir -p /opt/cloudera/parcels

– chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

6. 製作CDH本地源(master datanote節點執行)

cd  /opt/cloudera/parcel-repo

ls 

CDH-5.15.0-1.cdh5.15.0.p0.45-el7.parcel

CDH-5.15.0-1.cdh5.15.0.p0.45-el7.parcel.sha1

manifest.json

mv CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1 CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha

7. 關機做快照。

    init 0 || power off

8. 啟動CM Server、Agent

保證Mysql啟動:mysql  service mysqld start

全部會話:cd /opt/cloudera-manager/cm-5.15.0/etc/init.d/ ;

Server 執行: ./cloudera-scm-server start ;

Server、Agent 執行:./cloudera-scm-agent start ;

觀察啟動server的日誌

cd /opt/cloudera-manager/cm-5.4.3/log/cloudera-scm-server

tail -f   xxx.log(log的檔案)

進入web瀏覽器進行訪問,埠號:7180 ;使用者名稱和密碼admin、admin ;


                                              搭建CDH叢集

1、Cloudera 建議將 /proc/sys/vm/swappiness 設定為最大值 10。當前設定為 30。

解決"Cloudera 建議將 /proc/sys/vm/swappiness 設定為最大值 10。當前設定為 30"問題:

## 所有節點
vi /etc/sysctl.conf
vm.swappiness=10

2、檢查主機正確性時出現 “已啟用“透明大頁面”,它可能會導致重大的效能問題。” 的警告,進行如下設定:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
 
# vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

/usr/bin/mkdir -p /usr/java

/usr/bin/ln -s /usr/local/jdk1.7.0_79  /usr/java/default

 

3、Command aborted because of exception: Command timed-out after 90 seconds

      $>hdfs/hdfs.sh ["mkdir","/tmp","hdfs","supergroup","1777"]

解決方法 一、 

[root@cdh01 ~]# ps -ef 

clouder+ 27338  1688  2 Sep05 ?        00:22:31 /usr/local/software/jdk1.7.0_79/bin/java -serve
clouder+ 27340  1688  1 Sep05 ?        00:17:12 /usr/local/software/jdk1.7.0_79/bin/java -serve
clouder+ 27342  1688  0 Sep05 ?        00:04:27 /usr/local/software/jdk1.7.0_79/bin/java -serve
clouder+ 27358  1688  4 Sep05 ?        00:42:09 /usr/local/software/jdk1.7.0_79/bin/java -serve
zookeep+ 27535  1688  0 Sep05 ?        00:03:20 /usr/local/software/jdk1.7.0_79/bin/java -cp /o
zookeep+ 27542 27535  0 Sep05 ?        00:00:00 python2.7 /opt/cloudera-manager/cm-5.15.0/lib64
hdfs     27760  1688  0 Sep05 ?        00:03:57 /usr/local/software/jdk1.7.0_79/bin/java -Dproc
hdfs     27765  1688  0 Sep05 ?        00:10:16 /usr/local/software/jdk1.7.0_79/bin/java -Dproc
hdfs     27782 27760  0 Sep05 ?        00:00:00 python2.7 /opt/cloudera-manager/cm-5.15.0/lib64
hdfs     27855 27765  0 Sep05 ?        00:00:00 python2.7 /opt/cloudera-manager/cm-5.15.0/lib64
root     27902     2  0 01:26 ?        00:00:00 [kworker/0:3]
root     29111     2  0 01:34 ?        00:00:00 [kworker/0:1]
root     29747     2  0 01:39 ?        00:00:00 [kworker/0:0]
root     30113     2  0 01:42 ?        00:00:00 [kworker/0:2]
root     30304  1211  0 01:44 pts/1    00:00:00 ps -ef

[root@cdh01 ~]# su - hdfs
[hdfs@cdh01 ~]$ hdfs dfsadmin -safemode leave
Safe mode is OFF

解決方法 二、 
到伺服器上修改hadoop的配置檔案:conf/hdfs-core.xml, 找到 dfs.permissions 的配置項 , 將value值改為 false
在conf/hdfs-site.xml中加入
dfs.permissions
false


解決辦法三、
clouder manager 在web上操作流程:
 1)增加角色:HDFS->配置->檢查HDFS 許可權dfs.permissions這項不要打勾->儲存更改->重啟hdfs ,之後就可以用root使用者;

4、建立 Hive Metastore 資料庫表 Failed to Create Hive Metastore Database Tables.

【問題分析】
  安裝Hive,或oozie的時,因為我們使用了MySql作為hive/oozie的後設資料儲存,hive/oozie預設沒有帶mysql的驅動,需要新增       mysql驅動檔案;
【解決方法】
cp /usr/local/src/mysql-connector-java.jar  /opt/cloudera/parcels/CDH-5.15.1-1.cdh5.15.1.p0.4/lib/hive/lib
cp /usr/local/src/mysql-connector-java.jar  /opt/cloudera/parcels/CDH-5.15.1-1.cdh5.15.1.p0.4/lib/oozie/lib/
cp /usr/local/src/mysql-connector-java.jar  /var/lib/oozie/

5、Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=EXECUTE, inode="/tmp":hdfs:supergroup:d-wx------

從中很容易看出是因為當前執行Spark Application的使用者沒有Hdfs“/user”目錄的寫入許可權。這個問題無論是在Windows下還是Linux下提交Spark Application都經常會遇到。常見的解決方法有以下幾種。

  • 關閉Hdfs的安全檢查(permission checking):將hdfs-xml中 dfs.permissions 屬性的值設定為 false 。但是這種方法的弊端是會導致Hdfs系統中所有的安全特性都被禁用,使Hdfs的安全性降低。
  • Hdfs的使用者許可權是與本地檔案系統的使用者許可權繫結在一起的,根據錯誤中的

    Permission denied: user=root, access=EXECUTE, inode="/tmp":root:supergroup:d-wx------

    我們可以發現,Hdfs中的/user目錄是屬於supergroup組裡的root使用者的。因此我們可以想到用兩種方法解決這個問題: 
    修改執行操作的使用者為該目錄所屬的使用者。但是這種方法的弊端在於,與Hdfs進行互動的使用者可能有很多,這會導致經常修改執行類似操作的使用者。

    因此,個人推薦使用第三種方法:

  • 如果是Linux環境,將執行操作的使用者新增到supergroup使用者組。

groupadd supergroup
usermod -a -G supergroup root
  • 如果是Windows使用者,在hdfs namenode所在機器新增新使用者,使用者名稱為執行操作的Windows使用者名稱,然後將此使用者新增到supergroup使用者組。
adduser Administrator
groupadd supergroup
usermod -a -G supergroup Administrator
  • 這樣,以後每次執行類似操作可以將檔案寫入Hdfs中屬於Administrator使用者的目錄內,而不會出現上面的Exception。

6、啟動Hive時報錯:

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive. Name node is in safe mode. 

解決方法:hdfs dfsadmin -safemode leave ;

7、主機執行狀況不良

解決方法:

# 報錯主機執行:
# rm -rf /opt/cloudera-manager/cm-5.15.0/lib/cloudera-scm-agent/*

附:CDH安裝失敗,如何重新安裝

1> 刪除Agent節點的UUID 

      # rm -rf /opt/cloudera-manager/cm-5.15.0/lib/cloudera-scm-agent/*

2>  清空主節點CM資料庫

      進入主節點的Mysql資料庫,然後drop database cm;

3> 刪除Agent節點namenode和datanode節點資訊

     # rm -rf /dfs/nn/*

     # rm -rf /dfs/dn/*

4> 在主節點上重新初始化CM資料庫

5> 執行啟動指令碼

     Server節點:# /opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-server start

     Agent節點:# /opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-agent start

即可通過Server節點的7180埠重新進行CDH的安裝 http://master:7180/cmf/login。

 

 

相關文章