1. 程式人生 > >【hadoop】HA叢集時遇到的問題

【hadoop】HA叢集時遇到的問題

【持續更新】解決一些使用HA叢集遇到的問題,包括搭建、使用、開發等
1. 在格式化HDFS時報錯:

17/11/25 16:44:25 WARN namenode.NameNode: Encountered exception during format: 
org.apache.hadoop.hdfs.qjournal.client.QuorumException: Unable to check if JNs are ready for formatting. 1 exceptions thrown:
192.168.159.132:8485: No Route to Host from  master1/192.168
.159.129 to slave2:8485 failed on socket timeout exception: java.net.NoRouteToHostException: 沒有到主機的路由; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81) at org.apache.hadoop.hdfs.qjournal.client
.QuorumCall.rethrowException(QuorumCall.java:247) at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.hasSomeData(QuorumJournalManager.java:232) at org.apache.hadoop.hdfs.server.common.Storage.confirmFormat(Storage.java:901) at org.apache.hadoop.hdfs.server.namenode.FSImage.confirmFormat
(FSImage.java:194) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:995) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1566) 17/11/25 16:44:25 ERROR namenode.NameNode: Failed to start namenode. org.apache.hadoop.hdfs.qjournal.client.QuorumException: Unable to check if JNs are ready for formatting. 1 exceptions thrown: 192.168.159.132:8485: No Route to Host from master1/192.168.159.129 to slave2:8485 failed on socket timeout exception: java.net.NoRouteToHostException: 沒有到主機的路由; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81) at org.apache.hadoop.hdfs.qjournal.client.QuorumCall.rethrowException(QuorumCall.java:247) at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.hasSomeData(QuorumJournalManager.java:232) at org.apache.hadoop.hdfs.server.common.Storage.confirmFormat(Storage.java:901) at org.apache.hadoop.hdfs.server.namenode.FSImage.confirmFormat(FSImage.java:194) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:995) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1566)

這個錯誤是因為在啟動master2、slave1、slave2時沒有關閉防火牆,執行以下命令(環境均為Centos7):

systemctl stop firewalld.service

關閉上述三臺機器的防火牆,再執行格式化HDFS即可。
2. 在格式化ZKFC時出錯,即啟動zk,能夠單點啟動,但是始終三臺機器無法連線上,檢視zk狀態顯示:

[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

檢視zookeeper.out
最終修改 data資料夾下的myid檔案,根據zoo.cfg檔案設定的service順序,依次填寫,即master2的myid為1,slave1的myid為2,slave2的myid為3(切記,以後克隆虛擬機器要記得修改zk)
3. 啟動hdfs時報錯,主要是因為ssh連線問題,具體解決方案參考克隆虛擬機器的重置ssh步驟。
4. 啟動hdfs後,只有master1上啟動了namenode,在master2上並未啟動namenode,需要進行如下操作:

  • 將master1已經格式化好的namenode資訊複製給master2
scp -r tmp/ root@master2:/usr/local/hadoop/
  • 在master2上執行
hdfs namenode -bootstrapStandby
  • 重啟hdfs
stop-dfs.sh
start-dfs.sh

解決問題。
5. hdfs啟動後,未連線上datanode,需要為每個datanode填寫不同的資料儲存路徑(dfs.datanode.data.dir)
slave1:

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hdfs/data1</value>
</property>

slave2:

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hdfs/data2</value>
</property>

解決問題。
6. 出現某個namenode節點無法啟動的問題,具體報以下錯誤:

2018-01-17 17:38:49,548 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException: NameNode is not formatted.
......
2018-01-17 17:38:49,590 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.io.IOException: NameNode is not formatted.

原因是在啟動HA時未格式化備用namenode,其實叢集是已經啟動的,但是由於某些原因重啟,導致備用namenode無法啟動,報錯後在master1上執行格式化HDFS再啟動無效,需要將可以啟動的namenode(master1)中的元資料拷貝到不可啟動的namenode(master2)的data資料夾下。
這是在stackoverflow中找到的解釋:

```
If you have already formatted the NameNode, or are converting a non-HA-enabled cluster to be HA-enabled, you should now copy over the contents of your NameNode metadata directories to the other, unformatted NameNode by running the command “hdfs namenode -bootstrapStandby” on the unformatted NameNode. Running this command will also ensure that the JournalNodes (as configured by dfs.namenode.shared.edits.dir) contain sufficient edits transactions to be able to start both NameNodes.
```

具體解決方式:

scp -r hdfs/ master2:/usr/local/hadoop/

覆蓋master2的data檔案即可。
7. 在重啟集群后,出現6的問題,所以就再次格式化了HDFS,不過這樣也導致datanode的 clusterID與格式化後namanode的clusterID不一致,所以需要刪除datanode節點data目錄下的current檔案,不過這樣會導致HDFS檔案丟失,所以切記不能輕易格式化namenode。

相關推薦

hadoopHA叢集遇到的問題

【持續更新】解決一些使用HA叢集遇到的問題,包括搭建、使用、開發等 1. 在格式化HDFS時報錯: 17/11/25 16:44:25 WARN namenode.NameNode: Encountered exception during format

HadoopHA 場景下訪問 HDFS JAVA API Client

new mes inpu true stream node spa lba main 客戶端需要指定ns名稱,節點配置,ConfiguredFailoverProxyProvider等信息。 代碼示例: package cn.itacst.hadoop.hdfs; i

hadoophadoop完全分散式叢集安裝

文章目錄 前言 裝備 Core 總結 前言 後面準備更新hdfs操作(shell命令版本),hbase,hive的操作。 所以這裡先更新一下hadoop叢集安裝。 裝備 1.hadoop-2.6.5.tar.gz

執行stop-dfs.sh後無法停止hadoop叢集hadoop

錯誤情況: Stopping namenodes on [master] master: no namenode to stop slave1: no datanode to stop slave2: no datanode to stop slave3: no datanode t

HadoopHadoop 2.7.6安裝_偽分散式叢集

本篇主要演示在Linux上安裝單節點Hadoop模式,以及偽分散式Hadoop模式。一 安裝環境作業系統:Oracle Linux Server release 6.5;Java版本:java-1.7.0-openjdk-1.7.0.45;Hadoop版本:hadoop-2.

Hadoophiveserver2 不能啟動端口 10000 開啟服務的相關經驗總結

error: pro mon 進行 org multipl html pen exp 轉載來自http://blog.csdn.net/lsttoy/article/details/53490144。 這個問題困擾了我三天,各種查資料踩坑填坑的嘗試,終於搞定了這個

HadoopCombiner的本質是迷你的reducer,不能隨意使用

現在 使用 article driver eight 操作類 組合 通過 技術 問題提出: 眾所周知,Hadoop框架使用Mapper將數據處理成一個<key,value>鍵值對,再網絡節點間對其進行整理(shuffle),然後使用Reducer處理數據並進行最

HadoopHDFS的執行原理

【Hadoop】HDFS的執行原理   一部落格轉自–http://www.daniubiji.cn/archives/596   簡介 HDFS(Hadoop Distributed File System

HadoopLinux機器上面安裝pyhdfs

Linux機器上安裝pyhdfs 1、準備依賴模組 pyhdfs的安裝依賴requests和simplejson兩個模組,因此在安裝pyhdfs的時候最好已經先安裝了這兩個模組。 requests安裝包比較容易獲取,就不提供資源,pyhdfs的資源參考連結:https://downl

unityNavMesh 執行動態新增 OffMeshLink 線。

遊戲裡 有一些場景內的傳送陣,  做尋路時, 之前要美術預埋 OffMeshLink線。 但策劃會換位置, 兩邊就不一致了。 想著 OffMeshLink好像可以動態加。  網上沒有相關資料,  試了一下是可以的。 編輯器下可以動態加, 程式裡也基本可以

hadoophive 安裝實踐

1.下載Hive安裝包:   官網下載:http://hive.apache.org/downloads.html 2.上傳Hive的tar包,並解壓:建議和hadoop目錄在一級,方便後續使用;   解壓:tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /home/

Hadoop在Ubuntu系統下安裝Hadoop單機/偽分布式安裝

multi .cn 編輯器 重新 偽分布式 sources edit 信息 情況 Ubuntu 14.10 前方有坑: 由於之前的分布式系統電腦帶不動,所以想換一個偽分布式試一試。用的是Virtualbox + Ubuntu 14.10 。結果遇到了 apt-get 源無

MySQLMysql併發經典常見的死鎖原因及解決方法

https://www.cnblogs.com/zejin2008/p/5262751.html   1.    mysql都有什麼鎖   MySQL有三種鎖的級別:頁級、表級、行級。 表級鎖:開銷小,加鎖快;不會出現死

51Nod2004終結之

【題目連結】 點選開啟連結 【思路要點】 建出 支配樹 ,剩餘的操作均可以通過輕重鏈剖分+線段樹解決。 時間複雜度 O

HadoopHDFS開發手冊(JavaAPI)

文章目錄 前言 準備 Core Code 建立資料夾 建立新檔案 讀取檔案 檔案是否存在 下載檔案從指定目錄 上傳檔案到指定目錄 刪除檔案或資料夾 追加內容 重新命名檔案或資

Hadoop在Ubuntu系統下安裝Spark

clas 進行 運行 輸出結果 oca .com 修改 我們 with Spark 版本:spark-2.4.0-bin-without-hadoop.tgz 下載地址:http://spark.apache.org/downloads.html 下載的時候註意一下,需要

hadoop本地Eclipse編寫hadoop詞統計程式碼本地測試,打包上傳伺服器測試

環境準備 1、伺服器配置好hadoop2.7.3,詳細配置過程可參考 hadoop2.7.3環境配置 2、本地安裝好Eclipse,並配置好maven 3、本地解壓hadoop-2.7.3,並下載winutils.exe檔案放在自定義目錄下 本地Ecli

HadoopMapReduce深度分析

MapReduce深度分析 MapReduce總結構分析 資料流向分析 處理過程分析 各階段分析 MapTask Read階段 Map階段 Collector和Partitio

Hadoopyarn的資源排程

yarn的資源排程 yarn的資源排程 前言 三種主要排程器 排程策略對比 yarn的資源排程 前言 Hadoop作為分散式計算平臺,從叢集計算的角度分析,Hadoop可以將底層的計算資源整合後統

HadoopMapReduce平行計算框架

MapReduce平行計算框架 基本知識 前言 核心概念 計算模型 系統架構 作業配置 計算流程與機制 作業提交和初始化 Mapper Reducer