centos7 cdh安裝記錄

我在安裝centos的時(shí)候遇到了不少坑,這里簡(jiǎn)單記錄一下。以備后用。

安裝cdh的過程大致可理解為,先在一臺(tái)機(jī)器上安裝cloudera manager server。 然后再把cloudera manager 的 agent分發(fā)到各個(gè)節(jié)點(diǎn)。這樣就可以依賴clouder manager去管理集群中的各個(gè)節(jié)點(diǎn)。最后在cloudera manager里面去選擇需要安裝的hadoop服務(wù)。推薦在線安裝,雖然很多問題需要去解決,但起碼能更清晰的知道每一步該做什么。

安裝流程網(wǎng)上太多了,我自己也不見得寫得比人家好。自己根據(jù)版本去搜索一個(gè),這里推薦一個(gè)我參考的離線安裝版本-鏈接

我是在線安裝的過程,所以抽取了一些步驟。有些東西是不需要的,比如配置ssh免密鑰登錄,這個(gè)就不需要。到時(shí)候直接用root賬戶安裝就好了?;蛘哂衧udo權(quán)限的user用戶。

所以我的安裝流程大致為:

  1. 安裝mysql數(shù)據(jù)庫(kù),供cloudera manager server使用;
  2. 下載cdh安裝包,mysql-connector-java.jar 連接庫(kù), 配置安裝文件;
  3. 在每個(gè)節(jié)點(diǎn)安裝cloudera-manager-agent,這步可提前安裝。因?yàn)樵诤竺娴膱D形界面里安裝費(fèi)時(shí)很長(zhǎng),直接yum install cloudera-manager-agent就好了。
  4. 啟動(dòng)clouder-scm-server;
  5. 進(jìn)入cloudera manager頁(yè)面,安裝cdh。

cloudera manager的安裝包可從這里下載:
http://archive.cloudera.com/cm5/cm/5/
里面有cloudera不同的版本。centos7就明顯的表示為操作系統(tǒng)。還有一個(gè)參數(shù),el6/el7也表示操作系統(tǒng)的內(nèi)核。el6就能和centos6兼容,因?yàn)閏entos6自帶有python2.6以及相關(guān)的內(nèi)核。不能簡(jiǎn)單安裝一個(gè)python2.7去編譯支持centos7的cloudera包,因?yàn)閮?nèi)核也要升級(jí)。同理,el7的包只能在centos7上進(jìn)行安裝。所以,如果你的集群服務(wù)器不是同一個(gè)版本。就會(huì)一直卡在這個(gè)問題:

安裝失敗。 無法接收 Agent 發(fā)出的檢測(cè)信號(hào)。
請(qǐng)確保主機(jī)的名稱已正確配置。
請(qǐng)確保端口 7182 可在 Cloudera Manager Server 上訪問(檢查防火墻規(guī)則)。
請(qǐng)確保正在添加的主機(jī)上的端口 9000 和 9001 空閑。
檢查正在添加的主機(jī)上 /var/log/cloudera-scm-agent/ 中的代理日志(某些日志可在安裝詳細(xì)信息中找到)。
如果在 Cloudera Manager 中啟用為代理使用 TLS 加密(管理 -> 設(shè)置 -> 安全),請(qǐng)確保 /etc/cloudera-scm-agent/config.ini 在正在添加的主機(jī)上有 use_tls=1。重啟相應(yīng)的代理,并單擊此處的重試鏈接。

我因?yàn)閮蓚€(gè)原因在這個(gè)問題上卡了很久。其中一個(gè)就是我的主節(jié)點(diǎn)是centos7,另一個(gè)節(jié)點(diǎn)是centos6。log倒是有提示python2.6不能連接到目標(biāo)主機(jī),目標(biāo)主機(jī)是python2.7的編譯版本。另一個(gè)原因說起來都想哭,記住,所有l(wèi)inux服務(wù)器,不要以下劃線命名主機(jī)名。比如datanode_01這種絕對(duì)不允許。雖然大多數(shù)linux服務(wù)不會(huì)因?yàn)檫@個(gè)原因出錯(cuò)。但cdh的安裝會(huì)。而且,cdh5.10的log不提示原因,就一直卡在上面的錯(cuò)誤。后來我回退到cdh5.5再安裝一次才發(fā)現(xiàn)這個(gè)錯(cuò)誤是由linux主機(jī)名不能有下劃線這個(gè)原因引起的。

還遇到不少錯(cuò)誤,這里把幾個(gè)費(fèi)勁的記錄一下:

  1. 編輯參數(shù)的時(shí)候提示:
Error while committing the transaction

這個(gè)原因是數(shù)據(jù)庫(kù)編碼照成的,可以作如下操作。

alter table CONFIGS         modify `VALUE` longtext character set utf8 collate utf8_general_ci;
alter table CONFIGS_AUD     modify `VALUE` longtext character set utf8 collate utf8_general_ci;
alter table GLOBAL_SETTINGS modify `VALUE` longtext character set utf8 collate utf8_general_ci;
alter table USER_SETTINGS   modify `VALUE` longtext character set utf8 collate utf8_general_ci;
alter table AUDITS modify `MESSAGE` longtext character set utf8 collate utf8_general_ci;
alter table REVISIONS modify `MESSAGE` longtext character set utf8 collate utf8_general_ci;
  1. hive數(shù)據(jù)庫(kù)啟動(dòng)不了提示如下錯(cuò)誤
MetaException(message:Version information not found in metastore. )
Either your MetaData is incorrect, or you need to enable "datanucleus.autoCreateTables"

這個(gè)錯(cuò)誤需要在hive的配置里作如下修改,可通過圖形界面搜索,設(shè)置:

hive.metastore.schema.verification=false
datanucleus.autoCreateSchema=true
  1. hive數(shù)據(jù)庫(kù)一定要latin,其他庫(kù)選擇utf8.

  2. cloudera-scm-agent 啟動(dòng)或激活的時(shí)候報(bào)如下錯(cuò)誤:

ERROR    Caught unexpected exception in main loop.
Traceback (most recent call last):
  File "/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/agent.py", line 710, in __issue_heartbeat
    self._init_after_first_heartbeat_response(resp_data)
  File "/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/agent.py", line 947, in _init_after_first_heartbeat_response
    self.client_configs.load()
  File "/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py", line 682, in load
    new_deployed.update(self._lookup_alternatives(fname))
  File "/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py", line 432, in _lookup_alternatives
    return self._parse_alternatives(alt_name, out)
  File "/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py", line 444, in _parse_alternatives
    path, _, _, priority_str = line.rstrip().split(" ")
ValueError: too many values to unpack

這個(gè)錯(cuò)誤我是通過如下方法解決的(參考了這篇文章):
a. 找到下面這個(gè)文件;

/usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py 

b. 好習(xí)慣是先備份這個(gè)文件;
c. 把該文件從第443行到459行替換成如下內(nèi)容:

if line.startswith("/"):
        if len(line.rstrip().split(" "))<=4:
          path, _, _, priority_str = line.rstrip().split(" ")

          # Ignore the alternative if it's not managed by CM.
          if CM_MAGIC_PREFIX not in os.path.basename(path):
            continue

          try:
            priority = int(priority_str)
          except ValueError:
            THROTTLED_LOG.info("Failed to parse %s: %s", name, line)

          key = ClientConfigKey(name, path)
          value = ClientConfigValue(priority, self._read_generation(path))
          ret[key] = value

        else:
          pass
    return ret

d. 重啟cloudera-scm-agent 服務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容