#夏日挑战赛#,Docker搭建大数据平台之Hadoop,Spark,Hive初探 原创 精华
一、 文章前序
1. 序言
- 网络的发达,使得世界上有网络的每个地方,无时无刻都在产生数据。这些累积的数据,就像无形的巨大资源,等待着人们去挖掘。于是,大数据处理的理论以及实践随之产生的技术越来越成熟。作为一名开发者,学习理解并使用,或许可以用来解决身边的某些问题。
- 本文基于云原生docker,搭建单机版的大数据平台,初探大数据相关技术的搭建使用,抛砖引玉。
2. 相关技术
- Zookeeper
分布式集群管理、master选举、消息发布订阅、数据存储、分布式锁等等。分布式协调服务,用于维护集群配置的一致性、任务提交的事物性、集群中服务的地址管理、集群管理等。
- HDFS
分布式文件系统,适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭 之后就不需要改变。 - Yarn
分布式资源管理系统,用于同一管理集群中的资源(内存等) - MapReduce
Hadoop的编程框架,用map和reduce方式实现分布式程序设计,类似于Spring。 - Hive
数仓工具,Hive进行数据离线批量处理时,需将查询语言先转换成MR任务,由MR批量处理返回结果,所以Hive没法满足数据实时查询分析的需求。 - Hbase
Hadoop下的分布式数据库,类似于NoSQL。 - Sqoop
用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递。 - Hadoop
Hadoop 是一种分析和处理大数据的软件平台,是一个用 Java 语言实现的 Apache 的开源软件框架,在大量计算机组成的集群中实现了对海量数据的分布式计算。
Hadoop=HDFS+Yarn+MapReduce+Hbase+Hive+Zookeeper+Hbase+Hive+Sqoop (生态圈)
3. 用户画像
- 用户画像:
用户信息标签化。 - 数据是通过收集用户的社会属性、消费习惯、偏好特征等产生。
- 通过对数据的分析,对用户或者产品特征进行刻画,统计,从而挖掘潜在的价值信息。
- 标签分类
- 统计类标签,例如:近30天类的活跃天数,活跃时长等。
- 规则类标签,例如:当用户在30天内的活跃天数大于15天时会被打上 活跃用户 的标签。
- 机器学习挖掘类标签,例如:用户购买商品偏好,用户流失意向等。
二、Docker搭建大数据平台
1. 硬件
- 宿主机:WIN10 笔记本 16G ,VMWare虚拟机
- 虚拟机:CentOS8,64位,桥接模式,分配内存8G内存,存储80G。
- 本文搭建后,使用free -h 查看,使用了4.6G内存。
2. 技术框架版本以及下载链接
框架包 | 描述 | 下载路径 |
---|---|---|
hadoop-2.7.7 | http://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/ | |
hbase-2.1.1 | http://archive.apache.org/dist/hbase/1.2.1/ | |
hive-2.3.4 | http://archive.apache.org/dist/hive/hive-2.3.4/ | |
jdk1.8.0_144 | ||
scala-2.11.12 | https://www.scala-lang.org/download/2.11.12.html | |
spark-2.4.8-bin-hadoop2.7 | http://archive.apache.org/dist/spark/spark-2.4.8/ | |
zookeeper-3.4.8 | http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/ |
3. 依赖包已上传到天翼云盘(不限速)
https://cloud.189.cn/t/RF3YrmYb6RZv (访问码:0iz2)
4. 安装Docker
5. docker创建独立网段
6. 容器规划
域名 | IP |
---|---|
cloud1 | 172.18.0.2 |
cloud2 | 172.18.0.3 |
cloud3 | 172.18.0.4 |
7. 创建基础容器并安装ssh以及免密配置
-
参数 说明 –name 容器名称 -h 域名 –add-host /etc/hosts文件中的域名与IP的映射 –net 指定网段
8. 大数据环境安装
-
各软件版本
软件 版本 Java 1.8.0_144 Scala 2.11.12 Zookeeper 3.4.10 Hadoop 2.7.7 Spark 2.4.8 Hive 2.3.4 -
安装目录
-
将环境所需依赖包拷贝到容器内
-
配置环境变量
9. Zookeeper安装及配置
10. Hadoop安装及配置
-
修改Hadoop启动配置文件
-
修改核心配置文件
参数 说明 fs.defaultFS 默认的文件系统 hadoop.tmp.dir 临时文件目录 ha.zookeeper.quorum Zkserver信息 -
修改HDFS配置文件
参数 说明 dfs.nameservices 名称服务,在基于HA的HDFS中,用名称服务来表示当前活动的NameNode dfs.ha.namenodes.<nameservie> 配置名称服务下有哪些NameNode dfs.namenode.rpc-address.<nameservice>.<namenode> 配置NameNode远程调用地址 dfs.namenode.http-address.<nameservice>.<namenode> 配置NameNode浏览器访问地址 dfs.namenode.shared.edits.dir 配置名称服务对应的JournalNode dfs.journalnode.edits.dir JournalNode 存储数据的路径<br /> -
修改Yarn的配置文件
参数 说明 yarn.resourcemanager.hostname RescourceManager的地址,NodeManager的地址在slaves文件中定义 -
修改指定DataNode和NodeManager的配置文件
-
11. Spark安装及配置
-
Spark启动配置文件
-
修改指定Worker的配置文件
-
修改文件汇总
12. 集群部署
-
提交容器为新镜像
-
用新镜像创建容器
创建3个ssh的Tab页,分别执行如下命令
-
分别在cloud2和cloud3容器中修改Zookeeper配置
-
在所有节点启动Zkserver
-
hdfs的namenode的HA模式的同步
-
启动JournalNode
第一次格式化HDFS的过程中,HA会journalnode通讯,所以需要先把三个节点的journalnode启动。
在cloud1节点上执行 -
格式化NameNode
其中一个namenode(任选1个)上格式化,比如此处选择在cloud1节点上格式化namenode -
NameNode同步
另一个namenode位于cloud2,所以需要在cloud2节点上进行namenode同步操作 -
初始化 NameNode ZKFC
在其中一个namenode上初始化zkfc -
全面启动HDFS
-
在cloud1启动HDFS,Yarn,Spark
-
启动NameNode,DataNode,zkfc,JournalNode
-
启动ResouceManager,NodeManager
-
启动Master,Worker
-
-
查看启动进程
-
13. 外部web访问地址
服务 | 地址 |
---|---|
HDFS | cloud1:50070 |
Yarn | cloud1:8088 |
Spark | cloud1:8080 |
14. 访问截图
http://192.168.0.135:50070/dfshealth.html#tab-datanode
- 1.
http://192.168.0.135:8088/cluster
http://192.168.0.135:8080/
15. 测试提交Spark统计任务
-
准备待统计文本
-
将文本上传到hdfs上
-
执行Spark统计任务
-
查看统计结果
16. Hive安装
-
连接mysql(准备个mysql数据库)
-
检查环境配置
-
配置hive-site.xml
-
配置hive-env.sh
-
初始化Hvie元数据到mysql数据库中
-
准备测试导入数据
-
执行导入
-
如果执行 hive 时报错
三、基于Docker镜像快速创建
cloud1,cloud2,cloud3三个节点的镜像都放到了天翼云盘上,环境信息均已配置完成,只需要挨个启动就行。
cloud1:https://cloud.189.cn/t/Qj6ZBvvANFj2 (访问码:hhl5)
cloud2: https://cloud.189.cn/t/2q6fMnAjUjIj (访问码:5km2)
cloud3: https://cloud.189.cn/t/Afa6bme6NFza (访问码:j6ik)
四、常见问题
1. zookeeper集群启动失败
2. hdfs的HA启动失败
原因分析:操作步骤错误导致节点不能正常格式化
解决:操作步骤
- 1.
- 2.
- cloud1节点启动三个节点的journalnode,因为第一次格式化HDFS的过程中,HA会journalnode通讯
- 格式化cloud1节点namenode
- NameNode同步
- 格式化 NameNode ZKFC
3. hdfs的HA都是standby
4. hive启动失败
1. tail -f /tmp/root/hive.log 查看日志信息
2. 是否有mysql驱动jar cp /opt/my_tar/mysql-connector-java.jar /usr/local/hive-2.3.4/lib/
3. 检查HDFS状态 hdfs haadmin -getServiceState nn1
4. /usr/local/hive-2.3.4/conf/hive-site.xml 配置中路径以及msyql地址是否正确
- 1.
- 2.
- 3.
- 4.
5. hadoop报错: Operation category READ is not supported in state standby
同 3 解决方式
- 1.
写的不错,受教了
收藏学习了
谢谢,我会继续努力的
谢谢,我会继续努力的
未来可期,技术大神
写的非常棒,值得学习