【问题标题】:What are the approaches to the Big-Data problems? [closed]解决大数据问题的方法有哪些? [关闭]
【发布时间】:2015-08-25 19:17:59
【问题描述】:

让我们考虑以下问题。我们有一个包含大量数据(大数据)的系统。所以,实际上我们有一个数据库。作为第一个要求,我们希望能够快速写入和读取数据库。我们还希望有一个到数据库的网络接口(以便不同的客户端可以远程写入和读取数据库)。

但是我们想要拥有的系统应该不仅仅是一个数据库。首先,我们希望能够对数据运行不同的数据分析算法,以发现规律性、相关性、异常性等(就像以前我们非常关心性能一样)。其次,我们希望将机器学习机器绑定到数据库。这意味着我们希望对数据运行机器学习算法,以便能够学习数据上存在的“关系”,并据此预测尚未在数据库中的条目的值。

最后,我们希望有一个漂亮的基于点击的界面来可视化数据。使用户能够以漂亮的图形、图形和其他交互式可视化对象的形式看到数据。

解决上述问题的标准和广泛认可的方法是什么。必须使用哪些编程语言来处理所描述的问题?

【问题讨论】:

    标签: database machine-learning bigdata data-visualization data-analysis


    【解决方案1】:

    我将这样处理您的问题:我假设您已经对大数据数据库的使用非常感兴趣并且确实需要一个,因此我不会在有关它们的信息教科书上重复教科书,而是会强调一些符合您的5 个要求 - 主要是 CassandraHadoop


    1) 我们希望能够快速写入和读取数据库的第一个要求。

    您将想要探索经常用于存储“非结构化”大数据的 NoSQL 数据库。一些开源数据库包括HadoopCassandra。关于 Cassandra,

    Facebook 需要快速且廉价的东西来处理数十亿的状态更新,因此它启动了这个项目,并最终将其移至 Apache,并在许多社区中获得了大量支持 (ref)。

    参考文献:

    2) 我们还希望有一个数据库的 Web 界面

    查看 150 个NoSQL databases 的列表以查看所有可用的界面,包括 Web 界面。

    Cassandra 有一个cluster admin、一个web-based environment、一个基于AngularJS 的web-admin,甚至还有GUI clients

    参考文献:

    3) 我们希望能够对数据运行不同的数据分析算法

    Cassandra、Hive 和 Hadoop 非常适合数据分析。例如,eBay uses Cassandra 用于管理时间序列数据。

    参考文献:

    4) 我们希望对数据运行机器学习算法,以便能够学习“关系”

    同样,Cassandra 和 Hadoop 非常适合。关于 Apache Spark + Cassandra,

    Spark 于 2009 年在 UC Berkeley AMPLab 开发,开源于 2010年,2014年2月成为Apache顶级项目。 自成为大数据领域最大的开源社区之一,在 50 多个组织中拥有 200 多名贡献者 (ref)。

    关于 Hadoop,

    随着 Apache Hadoop 的迅速采用,企业将机器学习作为一项关键技术从其海量数据资产中提取有形商业价值。

    参考文献:

    5) 最后,我们希望有一个漂亮的基于点击的界面来可视化数据。

    与上述数据库一起使用的可视化工具(付费)包括PentahoJasperReportsDatameer Analytics Solutions。或者,有几个开源交互式可视化工具,例如 D3Dygraphs(用于大数据集)。

    参考文献:

    【讨论】:

      【解决方案2】:

      开始查看: 您想在数据库中存储什么样的数据? 你得到的数据之间有什么样的关系? 如何访问这些数据? (例如,您需要经常访问某组数据) 他们是文件吗?文本?还有什么?

      获得所有这些问题的答案后,您就可以开始查看可以使用哪个 NoSQL 数据库来满足您的需求了。

      您可以在 4 种不同类型之间进行选择:键值、文档、列族存储和图形数据库。 回答上面的问题可以确定哪一个最合适。

      有现成可用的堆栈可能真的有助于您开始项目:

      Elasticsearch 这将是您的数据库(它有一个 REST API,您可以使用它来将它们写入数据库并进行查询和分析)

      Kibana 是一个可视化工具,它可以让您探索和可视化您的数据,它非常强大,足以满足您的大部分需求

      Logstash可以集中处理数据并帮助您处理并保存在elasticsearch中,它已经支持相当少的日志和事件来源,您也可以编写自己的插件。

      有些人称它们为 ELK 堆栈。

      我认为您此时不必担心必须使用的编程语言,请先尝试选择工具,有时选择会受到您要使用的工具的限制,您仍然可以混合使用语言,并且只有在/当它有意义时才做出努力。

      【讨论】:

        【解决方案3】:

        大数据是一个棘手的问题,主要是因为它不是一个单一的问题。首先,如果您的原始数据库是一个全天处理业务事务的普通 OLTP 数据库,您将不希望在此系统上也进行大数据分析,因为您要做的数据分析会干扰正常的业务流量.

        问题 #1 是您希望使用哪种类型的数据库进行数据分析?您有很多选择,包括 RDBMS、Hadoop、MongoDB 和 Spark。如果您使用 RDBMS,那么您将希望更改模式以更符合数据分析。您将希望创建一个具有星型模式的数据仓库。这样做会为您提供许多工具,因为这种数据分析方法已经存在了很长时间。所有其他“大数据”和数据分析数据库都没有相同级别的可用工具,但它们正在迅速赶上。其中每一项都需要根据您的问题集研究您要使用哪一项。如果你有大批量的数据,RDBMS 和 Hadoop 会很好。如果您有流式数据类型,那么您将需要查看 MongoDB 和 Spark。如果您是 Java 商店,那么 RDBMS、Hadoop 或 Spark。如果你是 JavaScript MongoDB。如果你擅长 Scala,那么 Spark。

        问题 #2 是将您的数据从您的事务数据库中获取到您的大数据存储中。您将需要找到一种编程语言,该语言具有可与两个数据库对话的库,并且您必须决定何时何地移动这些数据。您可以使用 Python、Java 或 Ruby 来完成这项工作。

        问题 #3 是您的用户界面。如果您决定使用 RDBMS,那么您可以使用许多可用的工具,或者您可以构建自己的工具。其他数据存储解决方案将具有工具支持,但它不如 RDBMS 可用的成熟。无论如何,您很可能会在这里构建自己的工具,因为您的分析师会希望根据他们的规范构建工具。 Java 可以使用所有这些存储机制,但您也可以让 Python 工作。您可能希望提供一个用 Java 构建的服务层,该服务层提供 RESTful 接口,然后在该服务层前面放置一个 Web 层。如果您这样做,那么您的 Web 层可以用您喜欢的任何语言构建。

        【讨论】:

          【解决方案4】:

          解决此类要求的常用方法是使用Amazon Redshift 及其周围的生态系统。

          Redshift 是一个 PB 级数据仓库(它也可以从千兆级开始),它公开了 Ansi SQL 接口。由于您可以将任意数量的数据放入 DWH,并且您可以针对这些数据运行任何类型的 SQL,因此这是构建几乎任何敏捷和大数据分析系统的良好基础架构。

          Redshift 有很多分析功能,主要使用Window functions。您可以计算平均值和中位数,还可以计算百分位数、密集排名等。

          您可以使用 JDBS/ODBC 驱动程序连接几乎所有您想要的 SQL 客户端。它可以来自 R、R studio、psql,也可以来自 MS-Excel。

          AWS 最近为机器学习添加了一项新服务。 Amazon ML 与 Redshift 完美集成。您可以基于来自 Redshift 的数据构建预测模型,只需提供一个 SQL 查询来提取训练模型所需的数据,Amazon ML 将构建一个模型,您可以将其用于批量预测和实时预测预测。您可以查看 AWS 大数据博客中的这篇博文,其中显示了这种情况:http://blogs.aws.amazon.com/bigdata/post/TxGVITXN9DT5V6/Building-a-Binary-Classification-Model-with-Amazon-Machine-Learning-and-Amazon-R

          关于可视化,您可以将许多出色的可视化工具连接到 Redshift。最常见的是 Tableau、QliView、Looker 或 YellowFin,尤其是在您没有任何现有 DWH 的情况下,您可能希望继续使用 JasperSoft 或 Oracle BI 等工具。以下是此类合作伙伴列表的链接,这些合作伙伴在 Redshift 上为其可视化提供免费试用:http://aws.amazon.com/redshift/partners/

          顺便说一句,Redshift 还提供 2 个月的免费试用,您可以快速测试,看看它是否符合您的需求:http://aws.amazon.com/redshift/free-trial/

          【讨论】:

            【解决方案5】:

            这三种语言最常用于服务器端的机器学习和数据挖掘:R、Python、SQL。如果您的目标是繁重的数学函数和图形生成,Haskell 非常受欢迎。

            【讨论】:

            • 感谢您的回答。然而,我的问题不仅仅是关于语言的选择。我说的是整个基础设施(生态系统)。那么基于 Web 的 IO 层呢?是否有任何标准、被广泛接受的格式?用于数据可视化的 GUI 怎么样? Python 本身和 SQL 不提供任何机器学习部分...
            • @Roman:您处理这个问题的水平非常高,以至于使用的编程语言实际上几乎无关紧要。编程语言需要权衡成本,因为编程时间很昂贵,但是由于您没有提到成本是一个因素,我想添加以下内容:使用 ELK 中的 REST 后端,您可以插入高性能 Web UI 没有问题,最好是 node.js(让你进入 Javascript 领域)或非常简单的数据,C/C++ (FastCGI)
            猜你喜欢
            • 1970-01-01
            • 2016-02-07
            • 1970-01-01
            • 2010-09-08
            • 2018-01-05
            • 2013-03-25
            • 2010-10-16
            • 2021-12-19
            • 1970-01-01
            相关资源
            最近更新 更多