大数据生态课堂纪要
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据生态课堂纪要相关的知识,希望对你有一定的参考价值。
Hadoop 概念
-
分布式的计算框架 可靠 可扩展
-
可扩展 集群可以上万台,分布式计算 分布式存储
-
可靠high-availability(HA)
-
Hadoop可以做啥:
- 数据仓库
- 数据库一般只保存数据的最新状态,极个别重要的值会保存历史版本
- 数据仓库 会保存所有的历史版本 只记录 很少更新 删除
- PB级数据的存储 处理 分析 统计
- 日志分析
- 数据挖掘
- BI
- 数据仓库
Hadoop组件
- hadoop common
- 协调其它组件的通用工具
- HDFS
- 分布式文件系统
- 扩展性&容错性&海量数量存储
- 数据切成指定大小的数据块进行存储
- 数据会有冗余(多副本)保存 通过冗余实现容错
- MapReduce 离线计算
- 分布式计算框架
- 数据分布式存储的,需要对分布式存储的数据做分析计算 是移动数据到一个节点 还是 移动计算到每个节点 MapReduce 移动计算
- 扩展性&容错性&海量数据离线处理
- 计算分成两个阶段
- Map 分
- Reduce 合
- YARN
- 资源管理 作业调度
- 多个框架会用到HDFS上的数据,先后问题,需要有框架来协调 YARN起到了协调作用
- 另一种资源协调者 Mesos
- Yarn hadoop 2.0版本才加进来的 hadoop1.* 没有YARN
HDFS
- 数据冗余 高可用 副本数量也可以指定 3
- 数据拆分 配置文件中可以指定文件块大小 Block size 128MB
- A.log 分3份 block-id 001 002 003 副本数3 datnode 1 datanode 5 datanode 7
- 架构
- NameNode
- 响应客户端请求
- 元数据存储
- DataNode管理
- DataNode
- 数据的存储
- 和客户端之间io操作
- 定期向NameNode汇报自身情况
- NameNode
- NameNode高可用
- 3台 1台活着 另外两个备份 zookeeper管理
- hadoop.apache.org
yarn 架构
- 作用: 协调多个框架共同访问hdfs集群资源
- 架构:
- ResourceManager: RM 资源管理器
- 响应客户端请求
- 管理NodeManager状态
- 响应ApplicationMaster的请求
- NodeManager: NM 节点管理器
- 管理自身资源
- 启动container 运行task
- 响应ApplicationMaster的请求
- ApplicationMaster: AM
- 作业解析
- 向ResourceManager 请求资源
- 向NodeManager分发task
- Container 容器: 封装了CPU、Memory等资源的一个容器
- Client: 客户端提交作业
- ResourceManager: RM 资源管理器
- 访问 50070 8088端口失败 可能是防火墙的问题
- systemctl stop firewalld
MapReduce
-
mapreduce 既是分布式计算框架,也是一个编程模型
-
解决是数据分布式存储带来的分布式计算问题
-
把作业通过map阶段下发到每一个数据所在的节点
-
在reduce阶段汇总map阶段的结果
-
编程时候 要实现map接口和 reduce接口
-
python脚本来写map reduce代码时,是通过hadoop-streaming去实现的 最终还会编译成.jar文件执行
-
hadoop streaming 执行命令
STREAM_JAR_PATH="/root/bigdata/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.9.1.jar" # hadoop streaming jar包所在位置 INPUT_FILE_PATH_1="/test.txt" #要进行词频统计的文档在hdfs中的路径 OUTPUT_PATH="/output" #MR作业后结果的存放路径 hadoop fs -rm -r -skipTrash $OUTPUT_PATH # 输出路径如果之前存在 先删掉否则会报错 hadoop jar $STREAM_JAR_PATH \\ -input $INPUT_FILE_PATH_1 \\ # 指定输入文件位置 -output $OUTPUT_PATH \\ #指定输出结果位置 -mapper "python mapper.py" \\ #指定mapper执行的程序 -reducer "python reducer.py" \\ # 指定reduce阶段执行的程序 -file ./map.py \\ # 通过-file 把python源文件分发到集群的每一台机器上 -file ./red.py
-
Mrjob 介绍
- ①写一个类继承MRJob
- ②重写 mapper 和 reducer方法
- ③在main方法中 调用MRJob.run()方法 开启整个流程
-
MrJob提交作业的方式
-
本地测试
python mrjob代码.py 要处理的数据所在位置
-
提交到Hadoop集群处理
python word_count.py -r hadoop hdfs:///要统计的文件在hadoop的位置 -o hdfs:///输出结果保存的位置
-
-
如果是在虚拟环境下运行mrjob 可能会报错
- python word_count.py -r hadoop hdfs:///test.txt -o hdfs:///output --python-bin /miniconda2/envs/py365/bin/python
-
如果mapreduce有多个步骤 可以通过steps方法指定
实现steps方法用于指定自定义的mapper,comnbiner和reducer方法 def steps(self): return [ MRStep(mapper=self.mapper, combiner=self.combiner, reducer=self.reducer_sum), MRStep(reducer=self.top_n_reducer) ]
-
Mapreduce 慢的原因
- 数据处理的时候 频繁的在磁盘和内存上进行数据IO 而不是始终在内存总处理 这些I/0操作导致了速度比较慢
- buffer in memory:达到80%数据时,将数据锁在内存上,将这部分输出到磁盘上
-
MapReduce的架构演变
- 1.x的时候
- JobTracker master 计算集群管理
- TaskTracker slave 负责具体任务执行的
- Task Scheduler 作业调度
- 2.X Yarn出现 作业的调度都交给Yarn处理
- MapReduce只是进行具体任务执行
- 1.x的时候
Hadoop发型版本选择
- 社区版
- XXXXXX.apache.org下载
- 可以下载到最新的版本
- 如果涉及到的大数据框架比较多, 版本选择不慎可能会有兼容性问题
- CDH版
- 通过统一CDH版本来避免兼容性问题
- hadoop-2.6.0-cdh-5.7.0 和 Flume*****-cdh5.7.0
- 只要CDH版本一致就不会存在兼容性问题
- 缺点:新版本更新比社区版慢
- 部分内容没有开源
- 通过统一CDH版本来避免兼容性问题
数据分析/数据挖掘技术栈丰富程度
数据分析 sql pandas numpy excel 算法属于加分项 非大数据场景 10~15K
大数据相关的分析 sql pandas numy 大数据技术栈
etl 数据仓库 10~15K
sql pandas numy 大数据技术栈 机器学习算法(原理 应用场景,优化)
数据挖掘 推荐算法 用户画像
15K起
数学/算法的掌握程度
深度学习 nlp
图像
机器学习算法
数学功底比较好
以上是关于大数据生态课堂纪要的主要内容,如果未能解决你的问题,请参考以下文章
关于阿里云centos 2.6下手机表情输入后无法保存到mysql数据库的问题调研及mysql版本从5.1升级到5.7的全过程纪要