解决大数据问题的方法是什么?

What are the approaches to the Big-Data problems?

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

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

最后,我们想要一个漂亮的基于点击的界面来可视化数据。以便用户可以以漂亮的图形、图表和其他交互式可视化对象的形式查看数据。

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

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

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

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

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

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

AWS 最近添加了一项新的机器学习服务。 Amazon ML is integrating nicely with Redshift. You can build predictive models based on data from Redshift, by simply giving an SQL query that is pulling the data needed to train the model, and Amazon ML will build a model that you can use both for batch prediction as well as for real-time predictions. You can check this blog post from AWS big data blog that shows such a scenario: 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 等工具。以下是 link 此类合作伙伴的列表,这些合作伙伴为他们在 Redshift 之上的可视化提供免费试用:http://aws.amazon.com/redshift/partners/

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

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

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

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

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

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

一旦您找到了所有这些问题的答案,您就可以开始考虑可以使用哪个 NoSQL 数据库来满足您的需求。

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

已经准备好使用可能真正有助于开始您的项目的堆栈:

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

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

Logstash可以集中处理数据,帮你处理保存在elasticsearch中,已经支持相当少的日志和事件源,你也可以自己写插件还有。

有些人将它们称为 ELK 堆栈。

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

我会这样处理你的问题:我假设你已经对大数据数据库的使用很感兴趣并且确实需要一个,所以我不会在教科书中重复有关它们的信息,我会强调一些满足您的 5 个要求 - 主要是 Cassandra and Hadoop.


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

您将想要探索通常用于存储“非结构化”大数据的 NoSQL 数据库。一些开源数据库包括 Hadoop and Cassandra。关于卡桑德拉,

Facebook needed something fast and cheap to handle the billions of status updates, so it started this project and eventually moved it to Apache where it's found plenty of support in many communities (ref).

参考文献:

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

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

Cassandra 有一个 cluster admin, a web-based environment, a web-admin based on AngularJS, and even GUI clients

参考文献:

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

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

参考文献:

4) 我们希望 运行 机器学习算法能够在数据上学习 "relations"

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

Spark was developed in 2009 at UC Berkeley AMPLab, open sourced in 2010, and became a top-level Apache project in February, 2014. It has since become one of the largest open source communities in big data, with over 200 contributors in 50+ organizations (ref).

关于 Hadoop,

With the rapid adoption of Apache Hadoop, enterprises use machine learning as a key technology to extract tangible business value from their massive data assets.

参考文献:

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

适用于上述数据库的可视化工具(付费)包括Pentaho, JasperReports, and Datameer Analytics Solutions. Alternatively, there are several open-source interactive visualization tools such as D3 and Dygraphs(用于大数据集)。

参考文献: