溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于Docker的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)

發(fā)布時間:2021-12-13 11:38:56 來源:億速云 閱讀:301 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“基于Docker的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“基于Docker的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)”吧!

大數(shù)據(jù)開發(fā)對運(yùn)行環(huán)境和數(shù)據(jù)的依賴比較重,比如開發(fā)Spark應(yīng)用,往往會依賴Hive,但本地開發(fā)環(huán)境是沒有Hive的,所以需要在本地和服務(wù)器之間拷貝代碼,效率不高,我認(rèn)為用Docker在本地搭建一套單機(jī)的大數(shù)據(jù)集群,然后將代碼拷貝到容器里進(jìn)行測試,可以改善這種情況。我自己對這個思路做過探索,這個鏡像安裝了Hadoop、Hive、Spark等組件,基本可以滿足需求,但是也有一些問題存在,比如有時需要對配置進(jìn)行調(diào)整來保持和生產(chǎn)環(huán)境的一致性,雖然可以做,但工作量也不少。

其實(shí),CDH和HDP都提供了類似的單機(jī)鏡像,其中HDP中組件的版本比較新,并且和公司的技術(shù)棧一致,因此來探索一下,如果體驗(yàn)更好的話,以后就用它來進(jìn)行相關(guān)的開發(fā)了。

Sandbox獲取

系統(tǒng)要求

  • 安裝Docker 17.09 或更新的版本

  • 對于Windows和Mac,Docker需要配置10G以上的內(nèi)存

腳本下載與執(zhí)行

可以在瀏覽器里訪問https://www.cloudera.com/downloads/hortonworks-sandbox/hdp.html點(diǎn)擊頁面下載,也可以直接在命令行用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

解壓并執(zhí)行腳本:

$ 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

執(zhí)行后會開始拉取docker鏡像,需要下載幾十G的數(shù)據(jù),需要耐心等待。

Sandbox驗(yàn)證

腳本執(zhí)行完畢后,使用 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 這個容器先忽略,關(guān)注 sandbox-hdp 這個就可以,這時所有HDP的組件都已經(jīng)啟動了。

UI驗(yàn)證

因?yàn)橐呀?jīng)做了端口映射,如果要訪問特定的UI,直接訪問localhost對應(yīng)的端口就可以,可以先訪問 localhost:1080的Splash頁面:

基于Docker的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)

這里提供了向?qū)?,點(diǎn)擊左邊的Launch Dashboard可以打開Ambari登陸頁面和HDP的Tutorial頁面,點(diǎn)擊右邊的Quick Links會打開下一級向?qū)В珹mbari、Zeppelin、Atlas、Ranger等組件的跳轉(zhuǎn)鏈接:

其中Ambari的登陸密碼可以參考https://www.cloudera.com/tutorials/learning-the-ropes-of-the-hdp-sandbox.html這個頁面獲取,根據(jù)不同用途可以選擇不同的用戶:

用戶角色密碼
adminAmbari Admin使用ambari-admin-password-reset命令初始化獲得
maria_devSpark and SQL Developermaria_dev
raj_opsHadoop Warehouse Operatorraj_ops
holger_govData Stewardholger_gov
amy_dsData Scientistamy_ds

Web UI的情況讀者可以自行一一驗(yàn)證,下面來驗(yàn)證一下底層的存儲和計算情況。

功能驗(yàn)證

命令行進(jìn)入容器:

docker exec -it sandbox-hdp bash

HDFS驗(yàn)證

簡單的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

Hive驗(yàn)證

Sandbox里已經(jīng)內(nèi)置了一些測試數(shù)據(jù),select一下即可。

首先啟動hive命令行:

[root@sandbox-hdp /]# hive

查看有哪些數(shù)據(jù)庫:

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驗(yàn)證

啟動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庫。

做了一些搜索,發(fā)現(xiàn)貌似在HDP 3.0之后,Spark訪問Hive表發(fā)生了大的變化,Spark的驗(yàn)證還需要進(jìn)一步研究。

Sandbox管理

停止Sandbox

使用docker stop命令即可:

docker stop sandbox-hdp
docker stop sandbox-proxy

重啟Sandbox

使用docker start命令即可:

docker start sandbox-hdp
docker start sandbox-proxy

清理Sandbox

先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的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對基于Docker的大數(shù)據(jù)開發(fā)環(huán)境怎么實(shí)現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI