大数据
1. 学习hadoop之前,我们先了解一下什么是大数据?
大数据通常指的是数据集规模非常庞大且难以在常规数据库和数据处理工具中有效处理的数据。
大数据的特点:
- 容量:大数据具有庞大的规模,远远超出了传统数据库和数据处理工具处理的能力。这可能涉及到以亿计或更多行的数据
- 种类:数据类型的多样性,大数据可以包括来自不同来源、以不同格式存在的各种数据类型,如结构化数据(表格形式的数据,如数据库中的数据)、半结构化数据(XML、JSON等)和非结构化数据(文本、图像、音频等)
- 速度:大数据通常以极快的速度生成、传输和累积。实时或近实时的数据流是大数据环境下的一种常见情况
- 真实性:即数据的质量。数据的真实性低。
- 价值:价值密度低,需要我们合理应用大数据,以低成本创造高价值
2. 大数据的应用场景
- 数据处理的最典型应用:公司的产品运营情况分析
- 电商推荐系统:基于海量的浏览行为,购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐
- 精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后科研为广告主进行有针对性的精准的广告投放
大数据技术点
存储框架:
- HDFS------分布式文件存储系统(hadoop中的存储框架)
- HBase------分布式数据库系统
- Kafka------分布式消息缓存系统(实时流式数据处理场景中应用广泛)
- Elasticsearch------分布式的搜索引擎
计算框架 :
要解决的核心问题就是帮用户将处理逻辑在很多机器上并行 - MapReduce------离线批处理/hadoop中的运算框架
- spark------离线处理/微批处理
- storm------实时流式计算
- flink------离线处理/微批处理/实时流处理
- blink------与flink类似(国产)
辅助类的工具: - hive------数据仓库工具,可以接收SQL,翻译成MapReduce或者spark程序运行
- flume------用于数据采集
- sqoop------数据迁移,etl工具
- kibana------数据分析和可视化
- logstach------数据收集工具
等等
hadoop框架
1. hadoop是什么
- Hadoop是一个有Apache基金会所开发的分布式系统基础框架
- 主要解决:海量数据的存储问题和海量数据的分析计算问题
- 广义上来说,hadoop通常是指一个更广泛的概念------Hadoop生态圈
2. Hadoop的优势
(1)高可靠性
因为Hadoop假设计算元素和存储会出现故障,所以它会维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理
(2)高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
(3)高效性
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
(4)高容错性
自动保存多分副本数据,并且能够自动将失败的任务重新分配
3. Hadoop的组成
- Hadoop HDFS
一个高可靠、高吞吐量的分布式文件系统 - Hadoop MapReduce
一个分布式的离线并行计算框架 - Hadoop YARN
作业调度与集群资源管理的框架 - Hadoop Commen
支持其他模块的工具模块(configuration、RPC、序列化机制,日志操作)
4. Hadoop发行版
- Apache版本最原始(最基础)的版本,对于入门学习最好
- cloudera在大型互联网企业中用的最多
- hortonworks文档最好
Hadoop环境搭建
这里不再过多赘述,具体操作请查看https://blog.csdn.net/David_house/article/details/108627515
Hadoop运行环境
Hadoop运行环境有三种模式:本地模式,伪分布模式,完全分布模式
本地模式(standard mode) :
默认情况下,Hadoop即处于该模式,用于开发和调试
①不对配置文件进行修改
②使用本地文件系统,而不是分布式文件系统
③不会启动任何Hadoop守护进程,map任务和reduce任务作为同一个进程的不同部分来执行
④用于对MapReduce应用程序的开发或调试,确保程序正确
⑤当首次解压hadoop的源码包时,默认选择了最低的配置。这时,三个xml文件均为空,当配置文件为空时,hadoop会完全运行在本地
伪分布模式(pseudo-distribution mode):
Hadoop的守护进程运行在本机机器,模拟一个小规模的集群
①在一台主机上模拟一个小规模集群,使用分布式文件系统,一般用于程序调试与测试,可以说伪分布是完全分布的一个特例
②所有的守护进行运行在一台机器上,每个hadoop守护进程都是一个独立的java进程
③该模式在本地模式的基础上添加了代码的调试功能,允许你检查内存的使用情况、HDFS输入输出、其它的守护进程的交互
④需要修改配置文件以及格式化文件系统
⑤伪分布式模式也需要配置SSH无密码本机连接本机
注:
- 从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
- 从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。
- 一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。
完全分布模式(cluster mode):
Hadoop运行在由多台主机搭建的集群上,是真正的生产环境
- 多个节点组成的hadoop集群,NameNode和DataNode节点分开
xml文件 | 属性名称 | 本地模式 | 伪分布模式 | 完全分布模式 |
---|---|---|---|---|
core-site.xml | fs.defaultFs(fs.default.name) | file:///(默认) | hdfs://localhost | hdfs://node1 |
hdfs.site.xml | dfs.replication | N/A | 1 | 3(默认) |
mapres-site.xml | mapreduce.framework.name | local(默认) | yarn | yarn |
yarn-site.xml | yarn.resourcemanager.hostname | N/A | localhost | resourcemanager |
yarn-site.xml | yarn.nodemanager.auxservice | N/A | mapreduce_shuffle | maprecude_shuffle |
Hadoop进程
Hadoop集群一般有两种节点:主节点(master)和从节点(slave)
这些节点上一般有如下进程:
1)NameNode(hdfs服务):Master,它是一个主管、管理者
- 管理HDFS的名称空间;
- 管理数据块(Block)映射信息;
- 配置副本策略;
- 处理客户端读写请求。
2)DataNode(hdfs服务):Slave,NameNode下达命令,DataNode执行实际的操作
- 存储实际的数据块;
- 执行数据块的读/写操作。
3)Secondary NameNode:namenode的冷备,并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
- 辅助NameNode,分担其工作量;
- 定期合并Fsimage(文件系统镜像)和Edits log(编辑日志),并推送给NameNode;
- 在紧急情况下,可辅助恢复NameNode。
4)ResourceManager(JobTracker):(yarn服务)
- 处理客户端请求
- 监控NodeManager
- 启动或监控ApplicationMaster
- 资源的分配与调度
5)NodeManager(TaskTracker):(yarn服务)
- 管理单个节点上的资源
- 处理来自ResourceManager的命令
- 处理来自ApplicationMaster的命令
6)JobHistoryServer
- 负责管理MapReduce作业的历史记录和统计信息
7)HttpServer
- Hadoop的Web服务器,用于显示各种监控和管理信息
8)DFSZKFailoverController
高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
9)JournalNode
高可用情况下存放namenode的editlog文件。