您好,登錄后才能下訂單哦!
這篇文章主要講解了“基于Docker的大數據開發環境怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“基于Docker的大數據開發環境怎么實現”吧!
大數據開發對運行環境和數據的依賴比較重,比如開發Spark應用,往往會依賴Hive,但本地開發環境是沒有Hive的,所以需要在本地和服務器之間拷貝代碼,效率不高,我認為用Docker在本地搭建一套單機的大數據集群,然后將代碼拷貝到容器里進行測試,可以改善這種情況。我自己對這個思路做過探索,這個鏡像安裝了Hadoop、Hive、Spark等組件,基本可以滿足需求,但是也有一些問題存在,比如有時需要對配置進行調整來保持和生產環境的一致性,雖然可以做,但工作量也不少。
其實,CDH和HDP都提供了類似的單機鏡像,其中HDP中組件的版本比較新,并且和公司的技術棧一致,因此來探索一下,如果體驗更好的話,以后就用它來進行相關的開發了。
安裝Docker 17.09 或更新的版本
對于Windows和Mac,Docker需要配置10G以上的內存
可以在瀏覽器里訪問https://www.cloudera.com/downloads/hortonworks-sandbox/hdp.html點擊頁面下載,也可以直接在命令行用wget下載:
$ wget --no-check-certificate https://archive.cloudera.com/hwx-sandbox/hdp/hdp-3.0.1/HDP_3.0.1_docker-deploy-scripts_18120587fc7fb.zip
解壓并執行腳本:
$ unzip HDP_3.0.1_docker-deploy-scripts_18120587fc7fb.zip Archive: HDP_3.0.1_docker-deploy-scripts_18120587fc7fb.zip creating: assets/ inflating: assets/generate-proxy-deploy-script.sh inflating: assets/nginx.conf inflating: docker-deploy-hdp30.sh $ sh docker-deploy-hdp30.sh
執行后會開始拉取docker鏡像,需要下載幾十G的數據,需要耐心等待。
腳本執行完畢后,使用 docker ps
可以看到啟動了兩個容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES daf0f397ff6c hortonworks/sandbox-proxy:1.0 "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:1080->1080/tcp, ... b925f92f368d hortonworks/sandbox-hdp:3.0.1 "/usr/sbin/init" About an hour ago Up About an hour 22/tcp, 4200/tcp, 8080/tcp sandbox-hdp
其中 sandbox-proxy
這個容器先忽略,關注 sandbox-hdp
這個就可以,這時所有HDP的組件都已經啟動了。
因為已經做了端口映射,如果要訪問特定的UI,直接訪問localhost對應的端口就可以,可以先訪問 localhost:1080
的Splash頁面:
這里提供了向導,點擊左邊的Launch Dashboard可以打開Ambari登陸頁面和HDP的Tutorial頁面,點擊右邊的Quick Links會打開下一級向導,包含Ambari、Zeppelin、Atlas、Ranger等組件的跳轉鏈接:
其中Ambari的登陸密碼可以參考https://www.cloudera.com/tutorials/learning-the-ropes-of-the-hdp-sandbox.html這個頁面獲取,根據不同用途可以選擇不同的用戶:
用戶 | 角色 | 密碼 |
---|---|---|
admin | Ambari Admin | 使用ambari-admin-password-reset 命令初始化獲得 |
maria_dev | Spark and SQL Developer | maria_dev |
raj_ops | Hadoop Warehouse Operator | raj_ops |
holger_gov | Data Steward | holger_gov |
amy_ds | Data Scientist | amy_ds |
Web UI的情況讀者可以自行一一驗證,下面來驗證一下底層的存儲和計算情況。
命令行進入容器:
docker exec -it sandbox-hdp bash
簡單的ls一下:
[root@sandbox-hdp /]# hdfs dfs -ls /Found 13 items drwxrwxrwt - yarn hadoop 0 2018-11-29 17:56 /app-logs drwxr-xr-x - hdfs hdfs 0 2018-11-29 19:01 /apps drwxr-xr-x - yarn hadoop 0 2018-11-29 17:25 /ats drwxr-xr-x - hdfs hdfs 0 2018-11-29 17:26 /atsv2 drwxr-xr-x - hdfs hdfs 0 2018-11-29 17:26 /hdp drwx------ - livy hdfs 0 2018-11-29 17:55 /livy2-recovery drwxr-xr-x - mapred hdfs 0 2018-11-29 17:26 /mapred drwxrwxrwx - mapred hadoop 0 2018-11-29 17:26 /mr-history drwxr-xr-x - hdfs hdfs 0 2018-11-29 18:54 /ranger drwxrwxrwx - spark hadoop 0 2021-02-06 07:19 /spark2-history drwxrwxrwx - hdfs hdfs 0 2018-11-29 19:01 /tmp drwxr-xr-x - hdfs hdfs 0 2018-11-29 19:21 /user drwxr-xr-x - hdfs hdfs 0 2018-11-29 17:51 /warehouse
Sandbox里已經內置了一些測試數據,select一下即可。
首先啟動hive命令行:
[root@sandbox-hdp /]# hive
查看有哪些數據庫:
0: jdbc:hive2://sandbox-hdp.hortonworks.com:2> show databases; +---------------------+ | database_name | +---------------------+ | default | | foodmart | | information_schema | | sys | +---------------------+
選擇foodmart,再查看有哪些表:
0: jdbc:hive2://sandbox-hdp.hortonworks.com:2> use foodmart; 0: jdbc:hive2://sandbox-hdp.hortonworks.com:2> show tables; +--------------------------------+ | tab_name | +--------------------------------+ | account | | ... | +--------------------------------+
可以看到有很多表,我們就選擇account這張表:
0: jdbc:hive2://sandbox-hdp.hortonworks.com:2> select * from account limit 1; +---------------------+-------------------------+------------------------------+-----------------------+-------------------------+-------------------------+ | account.account_id | account.account_parent | account.account_description | account.account_type | account.account_rollup | account.custom_members | +---------------------+-------------------------+------------------------------+-----------------------+-------------------------+-------------------------+ | 1000 | NULL | Assets | Asset | ~ | | +---------------------+-------------------------+------------------------------+-----------------------+-------------------------+-------------------------+
非常OK。
啟動spark-sql后查詢account表:
spark-sql> select * from foodmart.account limit 1; Error in query: Table or view not found: `foodmart`.`account`; line 1 pos 14;'GlobalLimit 1 +- 'LocalLimit 1 +- 'Project [*] +- 'UnresolvedRelation `foodmart`.`account`
奇怪
spark-sql> show databases; default
只有default庫。
做了一些搜索,發現貌似在HDP 3.0之后,Spark訪問Hive表發生了大的變化,Spark的驗證還需要進一步研究。
使用docker stop
命令即可:
docker stop sandbox-hdp docker stop sandbox-proxy
使用docker start
命令即可:
docker start sandbox-hdp docker start sandbox-proxy
先stop再remove:
docker stop sandbox-hdp docker stop sandbox-proxy docker rm sandbox-hdp docker rm sandbox-proxy
如果要刪除鏡像的話:
docker rmi hortonworks/sandbox-hdp:3.0.1
感謝各位的閱讀,以上就是“基于Docker的大數據開發環境怎么實現”的內容了,經過本文的學習后,相信大家對基于Docker的大數據開發環境怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。