CDH5部署三部曲之三:問題總結
阿新 • • 發佈:2020-10-15
### 歡迎訪問我的GitHub
[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos)
內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;
### 系列文章連結
本文是《CDH5部署三部曲》的終篇,前面兩章完成了CDH5叢集的部署和啟動,本章將實戰中遇到的問題做個總結,如果碰巧您也遇到過這些問題,希望本文能給您一些參考;
1. [《CDH5部署三部曲之一:準備工作》](https://blog.csdn.net/boling_cavalry/article/details/105340968)
2. [《CDH5部署三部曲之二:部署和設定》](https://blog.csdn.net/boling_cavalry/article/details/105341713)
3. [《CDH5部署三部曲之三:問題總結》](https://blog.csdn.net/boling_cavalry/article/details//105342156)
### 啟動叢集服務報錯
1. 首次啟動叢集服務報錯,如下圖:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071630278-884102401.png)
2. 上述錯誤一般是對應節點的/usr/java/default目錄下沒有JDK所致,假設已將JDK部署在/usr/lib/jvm/jdk1.8.0_191,那麼只需執行以下命令建立軟連結即可:
```shell
mkdir /usr/java &&ln -s /usr/lib/jvm/jdk1.8.0_191 /usr/java/default
```
3. 點選頁面上的重試按鈕;
### NFS Gateway啟動失敗
1. 發現NFS Gateway服務有問題,檢查日誌:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071630774-918442075.png)
2. 日誌如下,在worker1節點上,portmap和rpcbind這兩個服務不存在導致的:
```shell
No portmap or rpcbind service is running on this host. Please start portmap or rpcbind service before attempting to start the NFS Gateway role on this host.
```
3. 於是安裝所需服務:
```shell
yum install -y nfs-utils rpcbind
```
4. 啟動服務:
```shell
systemctl start rpcbind
```
5. 再次啟動:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071631512-671931147.png)
6. 等待HDFS服務重啟完成後,如下圖,可見NFS Gateway問題已經消失:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071631946-1362881005.png)
### HDFS副本不足的塊
1. 問題如下圖綠框所示:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071632375-1942520078.png)
2. 目前只有一個datanode,可以增加一個,如下圖,進入HDFS的例項頁面,點選"新增角色例項":
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071632949-883747471.png)
3. 點選下圖紅框位置,增加一個DataNode:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071633372-2119924930.png)
4. 如下圖,確保worker1和worker2都選上:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071633750-38845663.png)
5. 勾選後,點選紅框2中的按鈕,在下拉選單中點選“啟動”:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071634171-727758234.png)
6. 現在有了兩個DataNode,所以副本數可以設定為2,如下圖紅框所示,按照順序找出引數進行設定,記得點選右下角的"儲存更改"按鈕:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071634561-1435044651.png)
7. 上述設定完成後,新寫入hdfs的檔案副本數為2,如果要將之前已經寫入的檔案的副本數也調整為2,請SSH登入worker1節點,執行以下命令切換到hdfs賬號:
```shell
su - hdfs
```
8. 以hdfs賬號的身份執行以下命令,即可完成副本數設定:
```shell
hadoop fs -setrep -R 2 /
```
9. 返回管理頁面,可見HDFS的狀態變成了健康:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071634982-574456514.png)
### Hive報錯
1. 如下圖紅框所示,Hive啟動失敗,日誌中提示Version information not found in metastore
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071635407-545863972.png)
2. 從上圖可見Hive服務在worker2上,於是SSH登入worker2,將/usr/share/java目錄下的mysql-connector-java.jar檔案複製到這個目錄下:/opt/cloudera/parcels/CDH-5.7.6-1.cdh5.7.6.p0.6/lib/hive/lib/
3. 在Hive的配置頁面,搜尋"hive.metastore.schema.verification",如下圖,確保紅框3中的複選框取消勾選:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071635765-531308734.png)
4. 修改配置datanucleus.autoCreateSchema,如下圖,確保紅框3中的複選框被選中:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071636056-2121271186.png)
5. 重啟完成後,Hive狀態為健康:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071636506-422401168.png)
### spark-shell執行失敗
1. 在worker1或者worker2上執行spark-shell命令進入spark控制檯時,會產生記憶體相關的錯誤,需要調整YARM相關的記憶體引數:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071637001-2016654202.png)
2. 在YARN的配置頁面,調整yarn.scheduler.maximum-allocation-mb和yarn.nodemanager.resource.memory-mb這兩個引數的值,原有的值都是1G,現在都改成2G,如下圖:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071637318-1963956935.png)
3. 重啟YARN;
4. 重啟Spark;
5. 執行spark-shell命令之前,先執行命令su - hdfs切換到hdfs賬號;
6. 這次終於成功進入spark-shell互動模式:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071637767-735483789.png)
### Hue啟動失敗
1. Hue啟動失敗如下圖:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071638202-53311740.png)
2. 上述失敗是由於資料夾、檔案、httpd服務沒有準備好導致的,執行以下命令修復此問題:
```shell
mkdir /var/log/hue-httpd/
chown hue:hue /var/log/hue-httpd/
cd /var/log/hue-httpd/
touch error_log
chown hue:hue /var/log/hue-httpd/error_log
yum install -y httpd mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
```
3. 在網頁上重啟Hue服務,稍後可見服務已經正常:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201015071638535-1020460392.png)
以上就是本次實戰過程中遇到的所有問題和解決方法,至此《CDH5部署三部曲》全部完成,如果您正在部署CDH,希望此係列文章能給您一些參考。
### 歡迎關注公眾號:程式設計師欣宸
> 微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...
[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blo