实时流数据的hbase分析

qnzebej0  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(466)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

去年关门了。
改进这个问题
这是一个相对广泛的问题,我知道我可能需要使用的工具来解决这样的问题(例如spark、kafka和hadoop),但我正在从一个有经验的专业人士的Angular 寻找一个具体的愿景
现在的问题是这样的:
我们正在使用一个类似谷歌分析的服务,它正在向我们发送一系列事件。事件是在页面上执行的操作。它可以是点击按钮、鼠标移动、页面滚动或我们定义的自定义事件。

{
"query_params":[

],
"device_type":"Desktop",
"browser_string":"Chrome 47.0.2526",
"ip":"62.82.34.0",
"screen_colors":"24",
"os":"Mac OS X",
"browser_version":"47.0.2526",
"session":1,
"country_code":"ES",
"document_encoding":"UTF-8",
"city":"Palma De Mallorca",
"tz":"Europe/Madrid",
"uuid":"A37F2D3A4B99FF003132D662EFEEAFCA",
"combination_goals_facet_term":"c2_g1",
"ts":1452015428,
"hour_of_day":17,
"os_version":"10.11.2",
"experiment":465,
"user_time":"2016-01-05T17:37:10.675000",
"direct_traffic":false,
"combination":"2",
"search_traffic":false,
"returning_visitor":false,
"hit_time":"2016-01-05T17:37:08",
"user_language":"es",
"device":"Other",
"active_goals":[
1
],
"account":196,
"url”:”http://someurl.com”,
“action”:”click”,
"country":"Spain",
"region":"Islas Baleares",
"day_of_week":"Tuesday",
"converted_goals":[

],
"social_traffic":false,
"converted_goals_info":[

],
"referrer”:”http://www.google.com”,
"browser":"Chrome",
"ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
"email_traffic":false
}

现在我们需要建立一个解决方案来分析这些数据。我们需要建立一个能够对数据进行聚合、过滤和切片的报表平台。
我们需要构建的报告的一个例子是
向我展示所有来自美国、使用chrome浏览器和iphone浏览器的用户。

显示来自referer的所有用户在某个特定按钮上的点击总数=“http://www.google.com总部在印度,使用桌面。在一天内,这项服务每天发送数百万个这样的事件,相当于gb的数据量。
以下是我的具体疑虑
我们应该如何存储如此庞大的数据
我们应该如何使自己能够实时分析数据。
这里的查询系统应该如何工作(我对这部分比较不了解)
如果我们要保存大约4 tb的数据,我们估计这些数据将在3个月内累积,那么应该采取什么策略来保留这些数据。何时以及如何删除?

m3eecexj

m3eecexj1#

让我尝试一个答案,我知道最好的是使用hadoop,kafka和spark。
我们应该如何存储如此庞大的数据:它是实时数据。所以你可以直接通过Kafka流到hdfs
我们应该如何使自己能够实时分析数据。-学习spark。正如您所说的大小(以tb为单位),请确保您有一个具有大量数据节点的集群。此外,如果可以的话,可以单独设置Spark束。Spark Dstream 非常擅长分析实时数据源。而且,它处理此类json数据时没有出现任何复杂的情况。
查询系统应该如何在这里工作 SQLcontext 可以在半结构化数据之上为用例编写简单的类似sql的查询。它就像sql一样简单。
如果我们要保存大约4 tb的数据,我们估计这些数据将在3个月内累积,那么应该采取什么策略来保留这些数据。何时以及如何删除?我建议您在积累和分析大约10天的数据之后,将数据从hdfs移动到一个更大的仓库,然后重复这个备份过程。否则,如果你能为你的hadoop购买硬件,那就好了。将其存储在hdfs中。
无论您上面提到的是什么指标,spark都可以在几行代码中轻松处理。相信我,这很简单。此外,对于dashboard,您可以将数据发送到qlikview前端。

nzk0hqpo

nzk0hqpo2#

我们应该如何存储如此庞大的数据。
使用其中一个云存储提供商(link)根据日期和小时(date=2018-11-25/hour=16)对数据进行分区,这将减少每个查询读取的数据量。将数据存储在二进制格式中,如parquet或orc,将提供更好的性能和压缩比。
我们应该如何使自己能够实时分析数据。
您可以运行多个应用程序来监听一个kakfa主题。首先使用spark structured streaming 2.3和连续模式应用程序(link)将事件存储到存储器中。这将为您提供查询和分析历史数据的选项,并在需要时重新处理事件。这里有两个选项:
存储在hdfs/s3/gcp存储等。在存储的数据上建立一个配置单元目录,以获得事件的实时视图。可以使用spark/hive/presto查询数据。注:如果生成小文件,则需要压缩。
存储在像cassandra或hbase这样的宽列存储中。链接对于这个用例我更喜欢这个选项。
并行运行另一个spark应用程序以进行实时分析,如果您知道聚合数据所依据的维度和度量,请使用spark structured streaming with windowing。您可以每分钟或5分钟按列和窗口分组,并存储在上述可实时查询的存储提供程序中。链接
这里的查询系统应该如何工作
如回答3所述,在存储的数据上构建一个配置单元目录,以获得事件的实时视图。出于报告目的,请使用spark/hive/presto查询数据。如果查询实时数据,请使用cassandra或hbase作为低延迟系统。
如果我们要保存大约4 tb的数据,我们估计这些数据将在3个月内累积,那么应该采取什么策略来保留这些数据。何时以及如何删除?
如果已正确分区数据,则可以根据定期存档规则将数据存档到冷备份。例如,可以维护从事件生成的维度和度量,并且可以在1个月后归档事件。

相关问题