從 http://archive.cloudera.com/cdh5/parcels/中下載CDH5.14.0的相關文件 css
緣由就是,mysql鏈接驅動沒有放到Hive和Oozie的相應目錄中。下文有詳解,這裏再也不重複。html
其餘都是一路綠燈經過,安裝過程至關順暢。java
本地經過Parcel安裝過程與本地經過Package安裝過程徹底一致,不一樣的是二者的本地源的配置。node
區別以下:python
Package本地源:軟件包是.rpm格式的,數量一般較多,下載的時候比較麻煩。經過」createrepo .」的命令建立源,並要放到存放源文件主機的web服務器的根目錄下,詳見建立本地yum軟件源,爲本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala作準備mysql
Parcel本地源:軟件包是以.parcel結尾,至關於壓縮包格式的,一個系統版本對應一個,下載的時候方便。如centos 6.x使用的CDH版本爲CDH-X.X.X-1.cdhX.X.X.p0.22-el6.parcel,而centos 5.x使用的CDH版本爲CDH-X.X.X-1.cdhX.X.X.p0.22-el5.parcel。linux
這些文件放好以後,CM會獲取這個包,並出如今主機->包裹的頁面。出現的快慢跟你設置的包的刷新頻率有關,默認是1小時。也能夠重啓CM服務和agent服務識別。web
能夠在管理頁面的屬性標籤下的包裹種類裏修改。sql
等待parcel安裝數據庫
正常狀況下 內網網速速好的話 10分鐘左右激活完畢,最多不超過30分鐘 若是卡住了 建議看看日誌
安裝過程當中有什麼問題 能夠用
/opt/cm-5.14.0/etc/init.d/cloudera-scm-agent status
/opt/cm-5.14.0/etc/init.d/cloudera-scm-server status
查看服務器客戶端狀態
也能夠經過
/var/log/cloudera-scm-server/cloudera-scm-server.log
/var/log/cloudera-scm-agent/cloudera-scm-agent.log
查看日誌
若是上面的路徑找不到則在
日誌文件夾"/opt/cm-5.14.0/log"查看日誌,裏面包含server和agent的log,使用命令以下:
tail -f /opt/cm-5.14.0/log/cloudera-scm-server/cloudera-scm-server.log
tail -f /opt/cm-5.14.0/log/cloudera-scm-agent/cloudera-scm-agent.log
例如我這裏NTP由於沒有外網,因此會報錯,不過有些錯誤不影響的話不須要管。
成功激活後繼續右下角點擊繼續
會進入自動檢查主機(耗時2分鐘左右)而後給出報告,包括須要修改的部分和組件的版本
這裏有2個警告須要解決一下,至於版本里的不可用不適用不須要管。
警告一
Cloudera 建議將 /proc/sys/vm/swappiness 設置爲最大值 10。當前設置爲 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf,以在重啓後保存該設置。您能夠繼續進行安裝,但 Cloudera Manager 可能會報告您的主機因爲交換而運行情況不良。如下主機將受到影響
解決方法
每臺受影響的主機運行
echo 10 > /proc/sys/vm/swappiness 便可解決。
警告二
已啓用透明大頁面壓縮,可能會致使重大性能問題。請運行「echo never > /sys/kernel/mm/transparent_hugepage/defrag」以禁用此設置,而後將同一命令添加到 /etc/rc.local 等初始腳本中,以便在系統重啓時予以設置。如下主機將受到影響
解決方法
每臺受影響的主機運行命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag
而且
vim /etc/rc.local
加入echo never > /sys/kernel/mm/transparent_hugepage/defrag這條命令。
而後點擊從新運行進行從新檢查
所有綠勾了,而後點擊右下角的完成。
選擇安裝哪些組件服務--這裏根據需求選擇便可。
右下角點擊繼續,而後配置角色。通常狀況下保持默認就能夠了(Cloudera Manager會根據機器的配置自動進行配置,若是須要特殊調整,自行進行設置就能夠了)。
我這裏使用默認配置,因此直接點擊繼續就能夠了。
而後配置數據庫
這裏須要輸入本身的mysql的對應數據庫名稱和用戶名以及密碼。
咱們以前在mysql中新建的數據名分佈對應填入 而後點擊測試鏈接。
hive root 123456
oozie root 123456
hue root 123456
若是測試鏈接所有是Successful,則點擊右下角的繼續。
查看日誌後發現緣由是
這個是由於cm的服務端是用java編寫的,cm的客戶端是python編寫的,這裏測試鏈接時是用python去鏈接數據庫。可是CentOS系統自己會缺乏一些python鏈接數據庫須要的關聯庫。
解決方法
在mysql的安裝目錄找到系統缺乏的這個包,關聯到系統便可。
根據最後提示,應該是找不着一個交libmysqlclient_r.so.16的文件,因而到mysql安裝目錄裏找到這個文件而且作一個軟鏈接到/usr/lib
若是是按照咱們以前的離線安裝mysql步驟安裝的話 默認的mysql安裝目錄是/var/lib/mysql/
ln -s /var/lib/mysql/lib/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16
可是/var/lib/mysql/ 目錄下沒有找到lib目錄
使用
find / -name libmysqlclient_r.so.16
whereis libmysqlclient_r.so.16
也找不到libmysqlclient_r.so.16。
咱們在以前解壓mysql文件的目錄裏發現了除了
MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm
這兩個安裝文件以外另外的rpm包。
咱們把其餘幾個關聯rpm包也安裝一下。
rpm -ivh MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm
安裝完成後再查找
whereis libmysqlclient_r.so.16
發現已經有了libmysqlclient_r.so.16並且已經在/usr/lib64路徑下了。
再次點擊測試鏈接,成功。
審覈更改中列出相關目錄和配置,若是有須要的話就修改,無特殊需求使用默認的便可,點擊右下角的繼續。
另外若是須要本身設定文件夾,必定要先mkdir文件夾,否側hdfs會沒法啓動,而且報錯文件夾不存在,並確保訪問權限。
集羣會首次運行全部的組件,這過程當中可能會有一些錯誤,不要擔憂,解決重試便可。下面會依次給出我遇到的狀況供你們參考,基本上都是權限或者驅動問題。
正確首次啓動後以下圖(是否是很激動^^)
右下角繼續,離成功安裝一步之遙。
Directory /tmp does not currently exist
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.
報錯信息
Mon Nov 28 14:20:59 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp does not currently exist.
+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar
+ set -x
+ replace_conf_dir
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp#g' '{}' ';'
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.
+ make_scripts_executable
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -regex '.*\.py∥shpy‖sh$' -exec chmod u+x '{}' ';'
+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'
+ ulimit -l
+ export HADOOP_IDENT_STRING=hdfs
+ HADOOP_IDENT_STRING=hdfs
+ '[' -n '' ']'
+ acquire_kerberos_tgt hdfs.keytab
+ '[' -z hdfs.keytab ']'
+ '[' -n '' ']'
+ '[' validate-writable-empty-dirs = mkdir ']'
+ '[' file-operation = mkdir ']'
+ '[' bootstrap = mkdir ']'
+ '[' failover = mkdir ']'
+ '[' transition-to-active = mkdir ']'
+ '[' initializeSharedEdits = mkdir ']'
+ '[' initialize-znode = mkdir ']'
+ '[' format-namenode = mkdir ']'
+ '[' monitor-decommission = mkdir ']'
+ '[' jnSyncWait = mkdir ']'
+ '[' nnRpcWait = mkdir ']'
+ '[' -safemode = supergroup -a get = 1777 ']'
+ '[' monitor-upgrade = mkdir ']'
+ '[' finalize-upgrade = mkdir ']'
+ '[' rolling-upgrade-prepare = mkdir ']'
+ '[' rolling-upgrade-finalize = mkdir ']'
+ '[' nnDnLiveWait = mkdir ']'
+ '[' refresh-datanode = mkdir ']'
+ '[' mkdir = mkdir ']'
+ '[' 5 -ne 5 ']'
+ DIR=/tmp
+ USER=hdfs
+ GROUP=supergroup
+ PERMS=1777
+ RET=0
+ /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop-hdfs/bin/hdfs --config /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp dfs -test -d /tmp
緣由是hdfs用戶或者cm用戶對這個文件沒有操做權限。咱們進入這個目錄查看
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
ls -l
發現確實是這個文件只有root才能讀寫,那麼咱們應該設置一下權限,由於cm是用hdfs用戶在操做的。
使用命令
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
chmod 666 supervisor.conf
ls -l
而後點擊右下角的重試。
啓動 Key-Value Store Indexer, YARN (MR2 Included)
僅完成 0/2 個步驟。首個失敗:在服務 Key-Value Store Indexer 上執行命令 Start 失敗
僅完成 0/2 個步驟。首個失敗:在服務 YARN (MR2 Included) 上執行命令 Create Job History Dir 失敗
使用用戶 mapred 組 hadoop 和權限 1777 建立 DFS 目錄 /tmp/logs
主機運行情況變成不良時,主機 cm0 (id=3) 上的進程 dfs-create-dir (id=72) 被標記爲失敗
Mon Nov 28 14:53:18 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp/logs does not currently exist.
Created directory /tmp/logs.
Changed ownership of /tmp/logs to mapred:hadoop.
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.
+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar
+ set -x+ replace_conf_dir+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir#g' '{}' ';'Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.+ make_scripts_executable+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -regex '.*\.py∥shpy‖sh$' -exec chmod u+x '{}' ';'+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'+ ulimit -l+ export HADOOP_IDENT_STRING=hdfs+ HADOOP_IDENT_STRING=hdfs+ '[' -n '' ']'+ acquire_kerberos_tgt hdfs.keytab+ '[' -z hdfs.keytab ']'+ '[' -n '' ']'+ '[' validate-writable-empty-dirs = mkdir ']'
點擊stderr看了詳細的報錯發現仍然是權限問題,解決方法跟以前同樣,進入這個路徑後更改下權限便可。
這種狀況界面上沒有詳細的信息可是在日誌中能夠看到是超時了,這種狀況下確保局域網網絡好的狀況下而且master服務器服務良好的狀況下直接重試。
++ false++ exec /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop/bin/hadoop jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib/hive-cli-1.1.0-cdh5.8.0.jar org.apache.hive.beeline.HiveSchemaTool -verbose -dbType mysql -initSchemaJava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverorg.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverat org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:79)at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:113)at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:159)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:257)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:70)... 11 more*** schemaTool failed ***
這是hive的lib包中缺乏mysql的驅動致使的。咱們以前已經把mysql驅動包mysql-connector-java-*-bin.jar放到主節點cm0的/opt中,如今複製一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib(這裏CDH-5.8.0-1.cdh5.8.0.p0.42要跟本身的版本對應)
使用命令以下
cd /opt/mysql-connector-java-5.1.40cp mysql-connector-java-5.1.40-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib中。 cd /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/libls|more確認已經放進去了。
而後點擊右下角的重試。
Error: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.DriverStack trace for the error was (for debug purposes):--------------------------------------java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:905)at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:185)at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:129)at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:80)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:894)at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:901)... 3 more--------------------------------------
+ '[' 0 = 1 ']'+ '[' CLOUDERA_MYSQL_CONNECTOR_JAR '!=' '' ']'+ eval 'JAR_LOCATION=$CLOUDERA_MYSQL_CONNECTOR_JAR'++ JAR_LOCATION=/usr/share/java/mysql-connector-java.jar+ echo 'Copying JDBC jar from /usr/share/java/mysql-connector-java.jar to /var/lib/oozie'+ cp /usr/share/java/mysql-connector-java.jar /var/lib/oozie/cp: cannot stat `/usr/share/java/mysql-connector-java.jar': No such file or directory+ OOZIECPPATH=
跟hive啓動的問題同樣,缺乏驅動。
Oozie的lib包中缺乏mysql的驅動致使的。咱們以前已經把mysql驅動包mysql-connector-java-*-bin.jar放到主節點cm0的/opt中,如今複製一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/Oozie/lib(這裏CDH-5.8.0-1.cdh5.8.0.p0.42要跟本身的版本對應)
再複製一份到/var/lib/oozie/
使用命令以下把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib中。
cd /opt/mysql-connector-java-5.1.40
cp mysql-connector-java-5.1.40-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib
cp mysql-connector-java-5.1.40-bin.jar /var/lib/oozie
cd /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib
ls|more
確認已經放進去了。
cd /var/lib/oozie
ls|more
點擊右下角重試。
恭喜您,安裝完成。
點擊完成後會進入監控界面。若是有紅色的話,仍是須要咱們去解決的。。。
主機報錯是沒有啓動ntpd服務或者是cm客戶端沒啓用。
每臺機器都執行以下命令啓動ntpd並設置爲開機啓動
[root@cdh1 ~]# systemctl start ntpd
[root@cdh1 ~]# systemctl enable ntpd
若是還不行,就打開主機的抑制功能,以下圖:
而後主機報錯的就排查了。
其餘服務錯誤,啓動一下試試,若是重啓不行就按照下面文章的方法排查錯誤。
具體排查的狀況能夠參考文章或者本身查資料。
hadoop基礎----hadoop實戰(九)-----hadoop管理工具---CDH的錯誤排查(持續更新)
所有解決後就全綠了。
到這裏咱們的安裝就算完成了。爲了之後的修復方便,咱們能夠對分別對linux系統進行備份。虛擬機的就很方便,直接複製壓縮虛擬機文件便可。
參考文章:https://www.cnblogs.com/felixzh/p/9082344.html