写点什么

基于 Docker 的大数据开发环境 - HDP Sandbox

用户头像
大数志
关注
发布于: 2021 年 02 月 06 日
基于Docker的大数据开发环境 - HDP Sandbox

大数据开发对运行环境和数据的依赖比较重,比如开发 Spark 应用,往往会依赖 Hive,但本地开发环境是没有 Hive 的,所以需要在本地和服务器之间拷贝代码,效率不高,我认为用 Docker 在本地搭建一套单机的大数据集群,然后将代码拷贝到容器里进行测试,可以改善这种情况。我自己对这个思路做过探索:https://github.com/iamabug/BigDataParty,这个镜像安装了 Hadoop、Hive、Spark 等组件,基本可以满足需求,但是也有一些问题存在,比如有时需要对配置进行调整来保持和生产环境的一致性,虽然可以做,但工作量也不少。


其实,CDH 和 HDP 都提供了类似的单机镜像,其中 HDP 中组件的版本比较新,并且和公司的技术栈一致,因此来探索一下,如果体验更好的话,以后就用它来进行相关的开发了。


CDH 镜像相关:https://hub.docker.com/r/cloudera/quickstart/


HDP 镜像相关:https://www.cloudera.com/tutorials/sandbox-deployment-and-install-guide/3.html


Sandbox 获取


系统要求


  • 安装 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.zipArchive:  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 的数据,需要耐心等待。


Sandbox 验证


脚本执行完毕后,使用 docker ps可以看到启动了两个容器:


CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            NAMESdaf0f397ff6c        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/tcpsandbox-hdp
复制代码


其中 sandbox-proxy 这个容器先忽略,关注 sandbox-hdp 这个就可以,这时所有 HDP 的组件都已经启动了。


UI 验证


因为已经做了端口映射,如果要访问特定的 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
复制代码


HDFS 验证


简单的 ls 一下:


[root@sandbox-hdp /]# hdfs dfs -ls /Found 13 itemsdrwxrwxrwt   - yarn   hadoop          0 2018-11-29 17:56 /app-logsdrwxr-xr-x   - hdfs   hdfs            0 2018-11-29 19:01 /appsdrwxr-xr-x   - yarn   hadoop          0 2018-11-29 17:25 /atsdrwxr-xr-x   - hdfs   hdfs            0 2018-11-29 17:26 /atsv2drwxr-xr-x   - hdfs   hdfs            0 2018-11-29 17:26 /hdpdrwx------   - livy   hdfs            0 2018-11-29 17:55 /livy2-recoverydrwxr-xr-x   - mapred hdfs            0 2018-11-29 17:26 /mapreddrwxrwxrwx   - mapred hadoop          0 2018-11-29 17:26 /mr-historydrwxr-xr-x   - hdfs   hdfs            0 2018-11-29 18:54 /rangerdrwxrwxrwx   - spark  hadoop          0 2021-02-06 07:19 /spark2-historydrwxrwxrwx   - hdfs   hdfs            0 2018-11-29 19:01 /tmpdrwxr-xr-x   - hdfs   hdfs            0 2018-11-29 19:21 /userdrwxr-xr-x   - hdfs   hdfs            0 2018-11-29 17:51 /warehouse
复制代码


Hive 验证


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 验证


启动 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 的验证还需要进一步研究。


Sandbox 管理


停止 Sandbox


使用docker stop命令即可:


docker stop sandbox-hdpdocker stop sandbox-proxy
复制代码


重启 Sandbox


使用docker start命令即可:


docker start sandbox-hdpdocker start sandbox-proxy
复制代码


清理 Sandbox


先 stop 再 remove:


docker stop sandbox-hdpdocker stop sandbox-proxydocker rm sandbox-hdpdocker rm sandbox-proxy
复制代码


如果要删除镜像的话:


docker rmi hortonworks/sandbox-hdp:3.0.1
复制代码


总结


HDP Sandbox 的启动非常方便,和文档没有出入,体验较好,大概率可以取代 BigDataParty 项目,继续试用和学习。


参考链接


  1. https://www.cloudera.com/tutorials/sandbox-deployment-and-install-guide/3.html

  2. https://www.cloudera.com/tutorials/learning-the-ropes-of-the-hdp-sandbox.html

公众号:大数志

传递最新、最有价值的大数据技术干货和资讯。


发布于: 2021 年 02 月 06 日阅读数: 25
用户头像

大数志

关注

坚持会有意义。 2020.11.08 加入

公众号【大数志】,传递最新、最有价值的大数据技术干货和资讯。

评论

发布
暂无评论
基于Docker的大数据开发环境 - HDP Sandbox