一.大数据特征
1. 数据量大:大数据涉及的数据量通常非常大,可能达到TB、PB甚至EB等级别。这些数据需要进行数据分析处理。
2. 要求快速响应:市场变化快,对数据分析的速度和性能有较高要求,需要能及时快速地响应变化。
3. 数据多样性:大数据包括结构化、半结构化和非结构化数据,其中非结构化数据越来越成为数据的主要部分。这些数据需要进行清洗、整理和筛选等操作,转化为结构化数据。
4. 价值密度低:虽然数据量极大,但真正有价值的内容可能较少。如何从大量的数据中提取出关键且有价值的部分,并将信息转换成知识是值得研究的内容。
此外,大数据还有其他特征,如真实性(数据的质量)、复杂性(数据量巨大,来源多渠道)和价值(合理运用大数据,以低成本创造高价值)。
二.结构化数据与非结构化数据
1.结构化数据:简单来说就是数据库,基本包括高速存储应用需求、数据备份需求、数据共享需求以及数据容灾需求。,比如企业ERP、财务系统;医疗HIS数据库;教育一卡通;政府行政审批;其他核心数据库等。
2.非结构化数据:非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片, HTML、各类报表、图像和音频/视频信息等等。
三.hadoop生态圈
Hadoop生态圈是由一系列基于Hadoop开发的相关工具、库、应用程序、平台和服务组成的生态系统。它们都是用于大数据处理、分析和存储的技术,旨在解决大规模数据处理问题。
四.Hadoop hdfs架构
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 HDFS是高容错性的,可以部署在低成本的硬件之上,HDFS提供高吞吐量地对应用程序数据访问,它适合大数据集的应用程序。
五.hdfs读的流程
1. 客户端通过调用FileSystem对象的open()来读取希望打开的文件。
2. Client向NameNode发起RPC请求,来确定请求文件block所在的位置。
3. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址;这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序。
4. Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性)。
5. 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕。
6. 并行读取,若失败重新读取。
7. 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下批的 block 列表。
8. 返回后续block列表。
9. 最终关闭读流,并将读取来所有的 block 会合并成一个完整的最终文件。