收集框架、大数据和最佳实践

jw5wzhpr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(329)

我有下列课程

public class BdFileContent {
    String filecontent;
}

e、 g file1.txt包含以下内容:

This is test

“this”表示文件内容对象的单个示例。
“is”表示另一个文件内容对象
“test”表示另一个文件内容对象
假设文件夹结构如下:

lineage
|
+-folder1
|    |
|    +-file1.txt
|    +-file2.txt
|
+-folder2
|    |
|    +-file3.txt
|    +-file4.txt
+-...
|
+-...+-fileN.txt

. . . .
n
n> 1000个文件
n值将是非常巨大的值
bdfilecontent类表示目录中文件中的每个字符串。
我要做大量的数据操作,需要在复杂的数据结构上创建一个工作。我要在内存和磁盘上执行计算。

ArrayList<ArrayList<ArrayList<BdFileContent>>> filecontentallFolderFileAsSingleStringToken = new ArrayList<>();

例如,上面的对象表示目录的所有文件内容。我必须为bdtree中的树节点添加这个对象。
我正在编写自己的树,并将filecontentallfolderfileassinglestringtoken添加为节点。
在什么样的扩展收集框架中,数据结构适合于海量数据。
在这一点上,我想了解一下大公司是如何使用数据结构来处理每天生成的大量数据的。
他们使用的是收集框架吗?
他们是否使用自己的自定义数据结构?
它们是否使用多节点数据结构,每个节点运行在不同的jvm上?
到目前为止,当内存中存在溢出信号且缺乏处理资源时,集合对象只能在单个jvm上运行,不能动态地使用另一个jvm
通常,对于大数据的数据结构,还有什么其他的开发人员方法?
其他开发者是如何处理的?
我想得到一些实际使用案例和经验的提示。

yhuiod9q

yhuiod9q1#

这些是您的查询的答案(这些查询是通过记住hadoop来解决的)
他们使用的是收集框架吗?
不,在hadoop中使用hdfs文件系统。
他们是否使用自己的自定义数据结构?
您必须了解hdfs-hadoop分布式文件系统。参考这本书从奥利利-hadoop:最终指南,第三版购买。如果您不想买这本书就想知道基本知识,请尝试以下链接-hdfc basics或apache hadoop。hdfc文件系统是一种可靠的容错系统。
它们是否使用多节点数据结构,每个节点运行在不同的jvm上?
对。请参阅hadoop 2.0体系结构
通常,对于大数据的数据结构,还有什么其他的开发人员方法?
有很多。请参阅:hadoop替代方案
其他开发者是如何处理的?
通过框架提供了各自的技术。hadoop中的map-reduce框架
我想得到一些实际使用案例和经验的提示
bigdata技术在rdbms失败的地方很有用——数据分析、数据仓库(用于报告和数据分析的系统)。一些用例-推荐引擎(linkedin)、广告定位(youtube)、处理大量数据-查找一个地方100多年来最热/最冷的一天的天气细节、股价分析、市场趋势等。
请参考许多实际的大数据用例

lhcgjxsq

lhcgjxsq2#

在大数据方面,可用的领先技术是hadoop分布式文件系统(又称hdfs,googledfs的变体)、hadoop、spark/mapreduce和hive(最初由facebook开发)。现在,当您主要询问大数据处理中使用的数据结构时,您需要了解这些系统的作用。
hadoop分布式文件系统-hdfs
简单地说,这是一个文件存储系统,它使用一个廉价机器集群来存储文件,这些文件本质上是“高可用”和“容错”的。因此,这就成为大数据处理中的数据输入源。现在可以是结构化数据(比如逗号分隔的记录)或非结构化数据(世界上所有书籍的内容)。
如何处理结构化数据
用于结构化数据的一项突出技术是hive。这提供了一个类似关系数据库的数据视图。请注意,它本身不是关系数据库。这个视图的来源同样是存储在磁盘上的文件(或大公司使用的hdfs)。现在,当您处理数据配置单元时,逻辑将应用于文件(内部通过一个/多个map reduce程序)并返回结果。现在,如果您希望存储这个结果,它将以结构化文件的形式再次降落到磁盘(或hdfs)上。
因此,一系列配置单元查询可以帮助您通过逐步转换将大数据集细化为所需的数据集。就像使用连接从传统数据库系统中提取数据,然后将数据存储到temp表中一样。
如何处理非结构化数据
在处理非结构化数据时,map-reduce方法与apache-pig(对于半结构化数据非常理想)是一种流行的方法。map-reduce范式主要使用磁盘数据(或hdfs)在多台机器上进行处理,并将结果输出到磁盘上。
如果你读过流行的hadoop-orilly-hadoop:权威指南;您会发现map-reduce程序基本上工作于键值类型的数据结构(如map);但它从不在一个时间点上保存所有的值。更像是
获取键值数据
做一些处理
通过上下文将数据吐到磁盘
对所有键值执行此操作,从而一次从大数据源处理一个逻辑单元。
最后,一个map reduce程序的输出被写入磁盘,现在您有了一组新的数据用于下一级处理(同样可能是另一个map reduce程序)。
现在回答您的具体问题:
在这一点上,我想了解一下大公司是如何使用数据结构来处理每天生成的大量数据的。
他们使用hdfs(或类似的分布式文件系统)来存储大数据。如果数据是结构化的,那么hive是处理这些数据的常用工具。因为用于转换数据的配置单元查询更接近sql(语法方面);学习曲线真的很低。
他们使用的是收集框架吗?
在处理大数据时,整个内容永远不会保存在内存中(甚至在集群节点上也不会)。它更像是一次处理一大块数据。在处理这一数据块时,它可能表示为一个集合(在内存中),但在最后,整个输出数据集以结构化形式转储回磁盘。
他们是否使用自己的自定义数据结构?
因为不是所有的数据都存储在内存中,所以没有定制数据结构的特定点。然而,Map内部或网络之间的数据移动是以数据结构的形式发生的,所以是的,存在一个数据结构;但从应用程序开发人员的Angular 来看,这并不是很重要的考虑因素。同样,MapReduce或其他大数据处理中的逻辑将由开发人员编写,您可以随时使用任何api(或自定义集合)来处理数据;但是数据必须按照框架所期望的数据结构写回磁盘。
它们是否使用多节点数据结构,每个节点运行在不同的jvm上?
文件中的大数据在多台机器上分块处理。e、 g.一个10 tb的数据由多个节点(单独的jvm,有时一台机器上也有多个jvm)跨集群以64 mb的块处理。但它也不是一个跨jvm的共享数据结构;相反,它是跨JVM的分布式数据输入(以文件块的形式)。
到目前为止,当内存中存在溢出信号且缺乏处理资源时,集合对象只能在单个jvm上运行,不能动态地使用另一个jvm
你是对的。
通常,对于大数据的数据结构,还有什么其他的开发人员方法?
对于数据输入/输出透视图,它始终是hdfs上的一个文件。数据处理(应用逻辑);您可以使用任何可以在jvm中运行的普通javaapi。现在,由于集群中的jvm在大数据环境中运行,它们也有资源限制。因此,必须将应用程序逻辑设置为在该资源限制内工作(就像我们对普通java程序所做的那样)
其他开发者是如何处理的?
我建议阅读权威指南(在上一节中提到)来理解大数据处理的构建块。这本书非常棒,涉及到大数据中的许多方面/问题及其解决方法。
我想得到一些实际使用案例和经验的提示。
大数据处理的用例有很多,特别是金融机构。google分析是一个突出的用例,它捕捉用户在网站上的行为,以确定在网页上放置google广告块的最佳位置。我与一家领先的金融机构合作,该机构将用户的交易数据加载到hive中,以便根据用户的行为进行欺诈检测。

7rtdyuoh

7rtdyuoh3#

当你处理大数据时,你必须改变方法。首先,您必须假设您的所有数据都不能放入一台机器的内存中,因此您需要在多台机器之间拆分数据,让它们计算您需要的数据,然后将所有这些数据重新组合在一起。因此,您可以使用collection,但只能用于整个工作的一部分。
我可以建议你看看:
hadoop:第一个处理大数据的框架
spark:另一个大数据框架,通常比hadoop更快
akka:一个编写分布式应用程序的框架
虽然hadoop和spark是大数据世界事实上的标准,但是akka只是一个框架,在很多环境中使用,而不仅仅是在大数据中:这意味着你必须编写hadoop和spark已经拥有的很多东西;我把它列入清单只是为了完整。
您可以阅读wordcount示例,它是大数据世界中的“helloworld”等价物,了解mapreduce编程范例如何适用于hadoop,或者您可以查看快速入门指南,以获得与spark等效的转换。

相关问题