Data Ingestion
Ingestion表示将数据 导入数据系统的过程. 你可能会想:这个问题有什么值得讨论的?
我们只要从某个地方 ---- 例如一个文件 --- 读取数据就可以了; 然后使用一些命令操作将数据直接导入数据系统. 或者,我们可以在web端, 或者其他可视化界面上输入数据 来导入系统. 这两种导入数据的方法都是有效的. 实际上,这两种方法仅仅对一部分 大数据系统有效, 比如,机票预约系统. 然而,当你想应对一些 比较大型的项目时. 你可能需要 更加智能的导入数据的方法. 所以说,数据导入是构成大数据应用基础的一部分。
当你在自动化(智能化)数据导入的时候,你可能会遇到一些问题。 我们将从两个例子中 来探索更多的细节.
第一个例子是一个医院的信息系统,这个系统有助于处方药精确量化. 这个医院从各部门 收集了数TB的医疗记录. 然后,这个医院被认为 成功建立了大数据系统.。
第二个例子与一个 基于数据仓库建立的数据云存储有关. 这个数据仓库存储了 许多人上传的短信,图片,视频,音乐等. 这个云存储也支持成员之间 的交流. 并把交流信息也进行了实时存储。
那么,现在在案例一的假设中,一个医院有一个 信息系统, 图示是 图示是对这个系统基本情况的一些回答。 在使用这个案例的时候, 不要过于 深究那些数字的准确性. 这仅仅是一些随机数字.。
这个案例演示了一些要点:
- 第一,现在数据有两类. 一类数据占的存储空间较大, 譬如与医疗记录相关的图片。而另一类 --- 像病人的就医记录本身 --- 所占有的存储空间虽然很小, 但由于数量相当多,所以作为一个数据整体却体量很大.
- 第二, 尽管病人就医记录很多, 同一个病人的完整记录往往 来自于数量相对稳定的、 几个不同部门的信息系统。 第三, 这个系统需要数据导入的频次和数据量不算很浩大,而且 与医院接收的就医量成比例。 第四,由于就医记录 的重要性, 即使数据有错, 它们也永远不能被删除. 存在错误的地方会被 标注,但数据仍会被保存.
这一条规则就是所谓的“错误处理原则” 不同的应用场景中,错误处理原则会有不同的规定.。错误处理原则仅仅是 数据导入原则体系中的一部分。 其他数据导入原则包括在数据更新量出现异常时 ---- 比如数据量突然增多或莫名变少时的处理原则 。上述案例已经故意不将这种情况考虑进去.
现在,比较前一个医疗信息系统案例与 后一个云存储系统案例 再次提醒一下:这些案例都并非是真实个案, 所以不要把例子中的数字当真。
在云存储系统案例中
第一,使用这个系统的会员数量会迅速增长。每个会员可能运用多种设备来建立和导入自己的数据
第二,云存储基站本身会高频更新换代, 考虑到会员数量的量级,这意味着大容量数据的高速导入。
第三,这个系统面临的主要挑战是保证数据的实时同步, 因此,这意味着大量数据将随着编辑过程被删除。
第四,这个系统有个数据过载原则,即 把过载数据暂时存储在备用站中, 等到数据流量变缓时再把这些数据导入系统。 然而,当备用站也过载时, 将会以0.1%的比例逐步丢弃导入的数据。
4:30
所以,现在我们知道为何数据导入以及导入中所使用的原则 应当是一个完整的大数据管理体系的一部分了, 特别是在数据快速更新的情况下。
Data Storage (存储)
现在,存储基础设施的目标显然是存储数据。这里有两个存储相关的问题。
第一个是能力问题。我们应该分配多少存储空间?这意味着内存的大小应该是多大的,有多少个磁盘单元,等等。
可扩展性的问题。应该将存储设备直接连接到计算机,使直接IO快速但可扩展性不高吗?或者应该将存储连接到网络连接集群中的计算机?这将使磁盘访问速度稍慢,但可以轻松地向系统添加更多存储空间。
现在这些问题没有一个简单的答案。如果您有兴趣,读者可以自行查找相关资料不同类别的问题涉及IU操作的速度。这个问题通常用这种称为内存层次结构,存储层次结构或有时存储层次结构的图来解决。
金字塔结构的顶部显示了称为高速缓存的一部分内存,
它居住在CPU内,速度非常快。有不同级别的缓存,称为L1,L2,L3,其中L3是最慢的,但仍然比我们所说的内存更快,这里显示为中间附近的橙色。
该图显示了他们在响应时间方面的速度。请注意,此处的内存流是每次访问65纳秒。相比之下,传统硬盘的速度大约为10毫秒。这个差距促使许多数据结构和算法的设计,使用硬盘,但是尽量减少快速内存和较慢磁盘之间的IO操作的成本。但最近,一种较新的存储。非常类似于我们经常使用的闪存驱动器或USB已经将条目作为新的存储介质。这些设备称为SSD或固态设备。它们比旋转硬盘要快得多。
一个更新的方法是NVMe,NVM代表非易失性存储器,使得SSD和内存之间的数据传输速度更快。
这在大数据系统中意味着什么?
现在我们可以选择通过选择我们需要的每种类型的存储来构建存储基础架构。在我自己研究的大量数据中,我发现使用固态硬盘,可以将数据的所有查找操作加速至少十倍以上。当然这是另一方面的成本因素。当我们从金字塔的下层到上层时,组件变得越来越贵。所以最终成为成本效益权衡的问题。
Data Quality
- 我们本质上有效地steal数据。但是有什么好处吗?
- 有没有办法知道数据是否有潜在的错误和有用的预期目的?
这是数据质量问题。任何数据应用程序,特别是较大的应用程序需要注意数据质量的原因很多。
这里有三个原因,当然还有更多的我们没有提到。
- 第一个原因强调,最大限度地利用大数据是其能够给予我们可行的洞察力的能力。
- 质量差的数据导致分析不佳,因此导致糟糕的决定。监管行业的第二个相关数据,如制药公司的临床试验或银行等财务数据。
这些行业的数据错误可以规范导致法律并发症的规定。
- 第三个因素与前两个不同。它说如果你的大数据应该被其他人或第三方软件使用,那么这些数据是非常重要的,以提供良好的质量来获得作为领导者提供者的信任。一大类数据应用是科学的,人类专家创建了大量综合数据库来了解科学问题。确保数据的准确性将导致与数据系统正确的人员参与和交互。知名技术研究和咨询公司Gartner创建了2015年有关大数据质量的行业报告。
在本报告中,他们确定了满足行业数据质量要求的方法。这种方法包括在适用的情况下遵守标准。它还指需要在数据系统中创建可用于检查数据是否通过一组正确的质量的规则。喜欢甚至超过18.它还包括清理数据的方法,如果发现有错误或不一致。
此外,数据质量管理应包括一个明确的工作流程,以确定如何纠正低质量的数据,使其恢复到高水平的质量。
Data Operations
数据管理的一个非常重要的方面是记录,定义,实现和测试特定应用程序所需的一组操作。正如稍后我们将在专业化中看到的那样,一些操作与数据类型无关,而另一些操作将要求我们知道数据的性质,因为操作使用特定的数据模型。那就是结构化的方式。
一般来说,有两个广泛的行动。那些工作在一个单一的对象和那些工作在数据对象的集合。
- 在第一种情况下,从图像区域中提取图像的操作是单个对象操作,因为我们将图像视为单个对象。
人们可以想到操作在数据集合上的第二类的许多子类。我们简要提到了三种非常常见的操作,无论数据的性质如何,都可以做到这一点。
- 第一个是收集并过滤出该集合的一个子集。最明显的情况是从集合中选择一个子集。在这个例子中,我们选择的数字大于3的圈子。
- 第二种情况是将两个集合合并在一起形成更大的集合。
在所示的示例中,通过将节点与公共属性融合来合并两个三个结构数据项。那是两个。
在最后一种情况下,我们计算一个集合的函数并返回函数的值。所以在这个例子中,函数是一个简单的计数。
在现实世界中,这种总体功能可能非常复杂。当我们更多地谈论Map读数时,我们将回到这个问题,但在这个过程中,我们将讨论许多不同的数据操作。
每个操作必须高效。这意味着每个操作必须尽可能快地执行其任务,尽可能少地占用内存或磁盘。显然,执行操作的时间取决于输入的大小和输出的大小。
因此,如果有机会使用并发操作可以分割数据并且同时对不同的线程进行操作,那么它肯定会这样做。
我们提供操作符的简单示例。这个叫做选择的运算符是指根据一些条件选择一个集合的子集。在这里,我们选择一个数字为偶数的圈子。
为了使其更有效率,我们可以将输入数据随机分为两组。现在,对于每个组,我们可以同时运行子集算法并获得部分结果。
对于此操作,部分结果可以直接发送到输出,无需任何其他处理步骤。
数据管理其实很在大数据中很重要的一个环节,场景多,不要管理的就要更有效。现在理解可能不够,但是有个认知还是很重要的。