利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐

利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐

想用 CDH 大禮包,于是先在 Mac 上和 Centos7.4 上分別搞個了單機的測試用。其實操作的流和使用到的命令差不多就一并說了:

首先前往官方下載包:

https://www.cloudera.com/downloads/quickstart_vms/5-13.html

如果使用 mac 并且安裝 docker。 我們可以很輕松的使用 kitematic 來獲取最新版本的 cloudera docker 鏡像。只需要搜 cloudera/quickstar 即可這是地址:

https://hub.docker.com/r/cloudera/quickstart/

?

當我們下載好鏡像之后就可以愉快的將進行加載起來。macos 基本是全程無腦,linux 稍微麻煩一點使用

docker import cloudera-quickstart-vm-5.13.0-0-beta-docker.tar

將鏡像 import 進來。

然后使用命令啟動就可以了。

Cloudera 的 docker 版本分成兩部分啟動。一方面是大禮包的啟動 /usr/bin/docker-quickstart,一方面是 Cloudera manager 本身的啟動 /home/cloudera/cloudera-manager

這里我們使用命令

docker run --name cdh --hostname=quickstart.cloudera --privileged=true -t -i -p 8020:8020 -p 8022:8022 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -p 8890:8890 -p 60010:60010 -p 10002:10002 -p 25010:25010 -p 25020:25020 -p 18088:18088 -p 8088:8088 -p 19888:19888 -p 7187:7187 -p 11000:11000 cloudera/quickstart /bin/bash -c '/usr/bin/docker-quickstart && /home/cloudera/cloudera-manager --express && service ntpd start'

直接啟動兩個程序。這里注意參數都可以從下面 refrence 查詢到大概是什么意思,合理之所以要寫這么多端口映射也是為了方便我們外面的機器可以方面的訪問 docker 內部的這些端口,訪問這些服務。 Cloudera 本身的 manager 是 7180 端口。當這些啟動起來之后就可以訪問目標機器 ip 的 7180 端口訪問 Cloudera manager 了。

?

?

上圖就是一個 dashbord 的樣子。另外在 linux 機器有一個地方需要注意的是,可能你的 docker 用上面命令起起來之后,docker 內的實例沒有辦法訪問外網,這里我們配置一下 docker 創建容器時候的參數增加 -net host 即可。也可以在宿主機器上在 /etc/default/docker 文件。并且配置上 DOCKER_OPTS="--dns host_ip" 即可。

?

從上圖我們還可以注意到另外一個問題,除了主機和 manager 都沒有啟動。在 Cloudera 大禮包中,只有 hue 和 manager 本身是什么服務都不依賴的可以在任何時候選擇啟動和關閉。其他的應用多多少少存在著一些啟動順序上的依賴這個要注意。?

現在我們來啟動幾個我們關心的服務,我們先來啟動 HDFS。

這里我已經把它啟動起來了當沒有啟動的時候點擊 start cm(Cloudera manager) 就會把這個給啟動起來。

點一下已經啟動起來的 HDFS 就會到這個應用的 dashborad cm 給我們提供了非常多的圖表以及面板可以關注目前機器和集群的情況如下圖:

目前看到的都是單節點的情況。讓我意外的是啟動的時候竟然還會有 Canary 模式。在這個界面點擊右上角的 NameNode Web UI 就可以看到老板我們熟悉的

社區版的 HDFS 界面了。比較方便的是當我們點擊 Configuration 就可以進到 HDFS 的一些配置包括塊大小之類的配置這里都可以方便設置。

可以看到這一套東西真的是把能包好的東西都已經給我們列出來了。

?

我暫時在單機上面啟了兩個 app 一個 HDFS 一個 Spark ,內存基本被打到了 5個G. 可以看出來其實 CDH 大禮包其實還是非常吃內存的。當我們在進行線上環境配置的

時候占用的資源肯定是只增不減。這里拋磚引玉了一個 app 接下來大家可以按照這個方法繼續探索。
?

既然 HDFS 已經啟動讓我們來嘗試使用 python 來操作一下 HDFS

pip install hdfs 安裝 hdfscli 包

from hdfs.client import Client
client = Client("http://127.0.0.1:50070", root="/", timeout=100)print(client.list("/"))
client.upload("/", "/Users/piperck/Desktop/About_me/dragen.wma")

可以看到我們可以直接創建連接,client.list 是列出 HDFS 目前根目錄的情況。 下面我們調用 client.upload 上傳文件。

上傳文件的時候可能遇到很多問題,因為我們這里使用的是 docker 搭建的 CDH ,所以一般會報這個錯誤:

('<requests.packages.urllib3.connection.HTTPConnection object at 0x00000000043A3FD0>: Failed to establish a new connection:[Errno 11004] getaddrinfo failed',))

這個時候我們需要去 docker 里面 hostname 一下會得到 quickstart.cloudera。我用的 macos 所以把這個直接配置進我電腦的 /etc/hosts 里。

127.0.0.1? ? ? ?quickstart.cloudera

否則,永遠報錯。。這里搞了非常久需要注意一下。

之后繼續嘗試連接,應該還會報另外一個錯誤:

Permission denied: user=root, access=WRITE, inode=&quot;/&quot;:hdfs:supergroup:drwxr-xr-x 

很明顯權限問題,因為我們并沒有登陸而且在本地使用的權限也不明。755 的權限導致我們無法上傳文件,這里的 root 權限是 hdfs 用戶,所以會失敗

這里有兩個辦法可以解決這個問題:

1. 調整 hdfs 的權限檢查將

<property><name>dfs.permissions</name><value>false</value>
</property>

設置為 False 關閉權限檢查。

2. 增加一個由這個用戶創建的文件夾在根目錄,然后將文件往那里面傳就可以了。?

?

現在我們再將傳上去的文件下載回來:

from hdfs.client import Client
client = Client("http://127.0.0.1:50070", root="/", timeout=100)print(client.list("/"))
client.download("/dragen.wma", "/Users/piperck/Desktop")

很輕松成功了,沒有再出什么幺蛾子。

?

Reference:

https://www.cloudera.com/documentation/enterprise/5-15-x/topics/quickstart_docker_container.html? ---docker 安裝啟動文檔

https://www.cloudera.com/documentation/enterprise/5-15-x/topics/cm_mc_start_stop_service.html#cmug_topic_5_6? ---啟動 hdfs 服務教程

https://blog.csdn.net/g11d111/article/details/72902112

https://dxysun.com/2018/07/19/hadoopForPythonHdfs/? PYTHONHDFS 使用教程

https://blog.csdn.net/Gamer_gyt/article/details/52446757??使用python的hdfs包操作分布式文件系統(HDFS)

https://segmentfault.com/a/1190000002672666? hadoop 常用文件的操作命令

?

?

官方文檔1:https://www.cloudera.com/documentation/enterprise/5-13-x/topics/quickstart_docker_container.html#importing_quickstart_image
官方文檔2:https://hub.docker.com/r/cloudera/quickstart1, 使用docker 拉取cdh的docker鏡像
2, 運行容器
3, 進入容器啟動cloudera服務
4, 通過web訪問: http://quickstart.cloudera:7180
?

服務名稱賬戶密碼
7180-web控制臺clouderacloudera
hueclouderacloudera
mysqlrootcloudera

拉取cdh的docker鏡像, 運行容器
###1, 使用docker 拉取cdh的docker鏡像, 運行容器

root@wang-pc:/var/lib/docker# docker pull cloudera/quickstartroot@wang-pc:/var/lib/docker# docker run \-id \--hostname=quickstart.cloudera \
--privileged=true ?\-p 8020:8020 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 \-p 50010:50010 -p 50020:50020 -p 8890:8890 -p 60010:60010 -p 10002:10002 ?\-p 25010:25010 -p 25020:25020 -p 18088:18088 -p 8088:8088 -p 19888:19888 \-p 7187:7187 -p 11000:11000 -t -p 8888:8888 \--name=mycdh3 \cloudera/quickstart /usr/bin/docker-quickstart?
d805d3c51b3f4c41c68fe2f3ba923f7e710b7f3c987b990b63a8fda9ee7bec4aroot@wang-pc:/var/lib/docker# docker ps
CONTAINER ID ? ? ? ?IMAGE ? ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? ?CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? ?PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NAMES
d805d3c51b3f ? ? ? ?cloudera/quickstart ? "/usr/bin/docker-q..." ? 5 seconds ago ? ? ? Up 3 seconds ? ? ? ?0.0.0.0:7180->7180/tcp, 0.0.0.0:7187->7187/tcp, 0.0.0.0:8020->8020/tcp, 0.0.0.0:8088->8088/tcp, 0.0.0.0:8888->8888/tcp, 0.0.0.0:8890->8890/tcp, 0.0.0.0:10002->10002/tcp, 0.0.0.0:11000->11000/tcp, 0.0.0.0:18088->18088/tcp, 0.0.0.0:19888->19888/tcp, 0.0.0.0:21050->21050/tcp, 0.0.0.0:25010->25010/tcp, 0.0.0.0:25020->25020/tcp, 0.0.0.0:50010->50010/tcp, 0.0.0.0:50020->50020/tcp, 0.0.0.0:50070->50070/tcp, 0.0.0.0:50075->50075/tcp, 0.0.0.0:60010->60010/tcp ? mycdh3


?
1, cloudera-manager啟動腳本分析

/home/cloudera/cloudera-manager:# cm server啟動
log 'Starting Cloudera Manager server...'
service cloudera-scm-server start 2>&1 > /dev/null
# cm agent啟動
log 'Starting Cloudera Manager agent...'
service cloudera-scm-agent start 2>&1 > /dev/null


2, 進入容器: 啟動cdh服務

###, 運行容器, 啟動cloudera
root@wang-pc:/var/lib/docker# docker exec -it mycdh3 bash
[root@quickstart /]# ls
bin ?boot ?dev ?etc ?home ?lib ?lib64 ?lost+found ?media ?mnt ?opt ?packer-files ?proc ?root ?sbin ?selinux ?srv ?sys ?tmp ?usr ?var
[root@quickstart /]# /home/cloudera/cloudera-manager --enterprise[QuickStart] Shutting down CDH services via init scripts...
kafka-server: unrecognized service
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
[QuickStart] Disabling CDH services on boot...
error reading information on service kafka-server: No such file or directory
[QuickStart] Starting Cloudera Manager server...
[QuickStart] Waiting for Cloudera Manager API...
[QuickStart] Starting Cloudera Manager agent...
[QuickStart] Activating trial license for Enterprise...
[QuickStart] Configuring deployment...
Submitted jobs: 16
[QuickStart] Deploying client configuration...
Submitted jobs: 17
[QuickStart] Starting Cloudera Management Service...
Submitted jobs: 25
[QuickStart] Enabling Cloudera Manager daemons on boot...
________________________________________________________________________________
Success! You can now log into Cloudera Manager from the QuickStart VM's browser:http://quickstart.cloudera:7180Username: clouderaPassword: cloudera


配置host映射

root@wang-pc:/home/wang# cat /etc/hosts
127.0.0.1?? ?localhost wang-pc quickstart.cloudera


?

測試hdfs, yarn 是否正常

su hdfs
cd ; echo "a,b,c">a.txt; hdfs dfs -put a.txt /
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /a.txt /mapred-out-wc.txt

———————————————

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386445.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386445.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386445.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端有用JavaScript技巧

數組去重 var arr [1, 2, 3, 3, 4];console.log(...new Set(arr))// [1, 2, 3, 4] 數組和布爾值 有時我們需要過濾數組中值為 false 的值. 例如(0, undefined, null, false) var myArray [1, 0 , undefined, null, false];myArray.filter(Boolean);//[1] 合并對象 const page…

還沒吃透內存緩存LruCache實現原理的看這篇文章,面試必會

前言 這篇文章主要是分享今年上半年的面試心得&#xff0c;現已就職于某大廠有三個月了&#xff0c;近期有很多公司均已啟動秋招&#xff0c;也祝大家在 2020 的下半年面試順利&#xff0c;獲得理想的offer&#xff01; 之前找工作的那段時間感想頗多&#xff0c;總結一點面試…

fastjson反序列化漏洞原理及利用

重要漏洞利用poc及版本 我是從github上的參考中直接copy的exp&#xff0c;這個類就是要注入的類 import java.lang.Runtime; import java.lang.Process; public class Exploit { public Exploit() { try{ // 要執行的命令 String commands "calc.exe"; Process pc …

這個回答讓我錯失offer!offer拿到手軟

開頭 每到“金三銀四”的季節&#xff0c;總人很多人去尋找名叫“面經”一樣的東西&#xff0c;其實就是一個個具體的題目&#xff0c;然后臨陣磨槍&#xff0c;去“背”答案&#xff0c;如果一直是這樣的話&#xff0c;我相信你的能力不會有任何提高&#xff0c;即使工作三年…

Spark Windows

本文主要是講解Spark在Windows環境是如何搭建的 一、JDK的安裝 1、1 下載JDK 首先需要安裝JDK&#xff0c;并且將環境變量配置好&#xff0c;如果已經安裝了的老司機可以忽略。JDK&#xff08;全稱是JavaTM Platform Standard Edition Development Kit&#xff09;的安裝&…

ts

ts文件中使用以下注釋來臨時忽略規則出現的錯誤。如在定義變量是為定義類型就報錯誤 // tslint:disable——忽略該行以下所有代碼出現的錯誤提示// tslint:enable——當前ts文件重新啟用tslint// tslint:disable-line——忽略當前行代碼出現的錯誤提示// tslint:disable-next-l…

這個回答讓我錯失offer!成功收獲美團,小米安卓offer

前言 我們移動開發程序員應該首先明白一個要點&#xff0c;能夠學習的東西可以區分為『知識』和『技能』。 知識&#xff0c;就是你知道就知道、不知道就不知道的東西&#xff0c;比如『計算機系統中一個字節是包含8個bit』&#xff0c;你知道了之后就算掌握了。 技能&#…

vue 雙數據綁定原理

Vue的雙向數據綁定原理是什么&#xff1f; 答&#xff1a;vue.js 是采用數據劫持結合發布者-訂閱者模式的方式&#xff0c;通過Object.defineProperty()來劫持各個屬性的setter&#xff0c;getter&#xff0c;在數據變動時發布消息給訂閱者&#xff0c;觸發相應的監聽回調。 具…

Java lamda表達式快速分組

public class ProductDto {private long month;private String cate;private double count;} 分組 Map<String,List<ProductDto>> categoryMap alllist.getValue().stream().collect(Col lectors.groupingBy(ProductDto::getCate));求和 Double sumCount catego…

這么香的技術還不快點學起來,不吃透都對不起自己

大家應該看過很多分享面試成功的經驗&#xff0c;但根據幸存者偏差的理論&#xff0c;也許多看看別人面試失敗在哪里&#xff0c;對自己才更有幫助。 最近跟一個朋友聊天&#xff0c;他準備了幾個月&#xff0c;剛剛參加完字節跳動面試&#xff0c;第二面結束后&#xff0c;嗯&…

Unity3D熱更新之LuaFramework篇[06]--Lua中是怎么實現腳本生命周期的

前言 用c#開發的時候&#xff0c;新建的腳本都默認繼承自Monobehaviour, 因此腳本才有了自己的生命周期函數&#xff0c;如Awake,Start, Update, OnDestroy等。 在相應的方法中實現游戲邏輯&#xff0c;引擎會適時調用。 而Lua在這里做為c#的一個外延語言&#xff0c;自然是不受…

這么香的技術還不快點學起來,含BATJM大廠

前言 北京字節跳動科技有限公司成立于2012年3月&#xff0c;是最早將人工智能應用于移動互聯網場景的科技企業之一。其獨立研發的“今日頭條”客戶端&#xff0c;開創了一種全新的新聞閱讀模式。 我一直很向往這樣有創新精神&#xff0c;并做出了巨大成果的大公司&#xff0c…

.net Core把一個list集合里面的所有字段的數值匯總

前言&#xff1a;此隨筆僅供自己學習&#xff0c;如有不足還請指出 在很多時候&#xff0c;得到一個list集合&#xff0c;需要把里面的數據匯總&#xff0c;但我又不想寫那么多循環&#xff0c;于是去.net core 官方文檔找有沒有相關方法&#xff0c;很可惜我沒有找到&#xff…

openshift for linux

安裝openshift 1、下載地址&#xff1a; https://github.com/openshift/origin/releases 3.11下載&#xff1a; https://github.com/openshift/origin/releases/tag/v3.11.0 https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-server-v3.11…

這些Android高級必會知識點你能答出來幾個?含BATJM大廠

前言 首先介紹一下自己&#xff0c;計算機水本&#xff0c;考研與我無緣。之前在帝都某公司算法部實習&#xff0c;公司算大公司吧&#xff0c;然而個人愛好偏開發&#xff0c;大二的時候寫個一個app&#xff0c;主要是用各種框架。 一、掌握架構師筑基必備技能 二、掌握Andr…

Docker kafka

閱讀目錄 一、下載鏡像二、先啟動zookeeper三、啟動kafka四、創建一個topic&#xff08;使用代碼次步可省略&#xff09;五、kafka設置分區數量六、python代碼回到頂部 一、下載鏡像 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka 回到頂部 二、先啟…

這些年Android面試的那些套路,社招面試心得

前言 說不焦慮其實是假的&#xff0c;因為無論是現在還是最近幾年&#xff0c;很早就有人察覺Android開發的野蠻生長時代已經過去。過去的優勢是市場需要&#xff0c;這個技術少有人有&#xff0c;所以在搶占市場的時候&#xff0c;基本上滿足需要就已經可以了。但是現在&…

flask第一章:項目環境搭建

windows環境pycharmpython3 1、命令提示窗口 1&#xff09;創建項目目錄&#xff1a;mkdir myblog 2&#xff09;cd myblog 3&#xff09;創建虛擬環境&#xff1a;python -m venv myvenv 4&#xff09;激活虛擬環境&#xff1a;venv\Scripts\activate 5&#xff09;安裝flask&…

windows docker 空出C盤 遷移到其他盤

下面是操作方法&#xff1a; 首先關閉docker 關閉所有發行版&#xff1a;wsl --shutdown 將docker-desktop-data導出到D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar&#xff08;注意&#xff0c;原有的docker images不會一起導出&#xff09;wsl --expo…

安卓開發入門到精通!免費Android高級工程師學習資源,系列篇

前言 2017年進大學開始接觸Android&#xff0c;從剛開始接觸就不斷地聽到Android市場飽和&#xff0c;工作難找等消息。雖然當時也非常迷茫&#xff0c;不過由于第一次深入接觸編程語言&#xff0c;再加上自己的一點興趣&#xff0c;就一直堅持下來了。 到現在要畢業了&#…