让我们考虑以下问题。我们有一个包含大量数据的系统(大数据)。所以,实际上我们有一个数据库。作为第一个要求,我们希望能够快速写入和读取数据库。我们还希望拥有一个到数据库的Web界面(以便不同的客户端可以远程写入和读取数据库)。
但我们想拥有的系统应该不仅仅是一个数据库。首先,我们希望能够对数据运行不同的数据分析算法,以查找规律性,相关性,异常性等(就像之前我们对性能的关注一样)。其次,我们希望将机器学习机器绑定到数据库。这意味着我们希望在数据上运行机器学习算法,以便能够学习"关系"存在于数据上并基于该数据预测尚未存在于数据库中的条目的值。
最后,我们希望有一个基于点击的漂亮界面,可视化数据。这样用户就可以以漂亮的图形,图形和其他交互式可视化对象的形式看到数据。
上述问题的标准和广泛认可的方法是什么。必须使用哪些编程语言来处理所描述的问题?
答案 0 :(得分:10)
我会像这样处理你的问题:我认为你已经对大数据数据库的使用非常感兴趣并且真正需要一个,所以不要在教科书上重复有关它们的教科书,我会强调一些符合你的5个要求 - 主要是Cassandra和Hadoop。
1)我们希望能够快速写入和读取数据库的第一个要求。
您需要探索通常用于存储“非结构化”大数据的NoSQL数据库。一些开源数据库包括Hadoop和Cassandra。关于卡桑德拉,
Facebook需要快速而廉价的东西来处理数十亿的状态更新,因此它启动了这个项目并最终将其移至Apache,在那里它在许多社区中得到了大量支持(ref)。
参考文献:
2)我们还希望拥有数据库的Web界面
请参阅150 NoSQL databases列表,查看所有可用的界面,包括Web界面。
Cassandra有cluster admin,web-based environment,web-admin基于AngularJS,甚至GUI clients。
参考文献:
3)我们希望能够对数据运行不同的数据分析算法
Cassandra,Hive和Hadoop非常适合数据分析。例如,eBay uses Cassandra用于管理时间序列数据。
参考文献:
4)我们希望对数据运行机器学习算法以便能够学习“关系”
再一次,Cassandra和Hadoop非常适合。关于Apache Spark + Cassandra,
Spark于2009年在加州大学伯克利分校AMPLab开发,开源于 2010年,并于2014年2月成为顶级Apache项目。它有 自从成为大数据领域最大的开源社区之一,在50多个组织中有超过200个贡献者(ref)。
关于Hadoop,
随着Apache Hadoop的迅速普及,企业将机器学习作为一项关键技术,从海量数据资产中提取切实的商业价值。
参考文献:
5)最后,我们想要一个基于点击的漂亮界面,可视化数据。
与上述数据库一起使用的可视化工具(付费)包括Pentaho,JasperReports和Datameer Analytics Solutions。或者,有几个开源交互式可视化工具,例如D3和Dygraphs(适用于大数据集)。
参考文献:
答案 1 :(得分:5)
开始查看: 您想要在数据库中存储哪种数据? 你得到的数据之间有什么样的关系? 如何访问这些数据? (例如,您需要经常访问某组数据) 他们是文件吗?文本?别的什么?
一旦你得到了所有这些问题的答案,你就可以开始查看你可以使用的NoSQL数据库,它可以为你提供最好的结果。
您可以选择4种不同类型:键值,文档,列族存储和图形数据库。 可以确定哪一个最适合回答上述问题。
准备好使用堆栈可能真正有助于开始您的项目:
Elasticsearch 这将是您的数据库(它有一个REST API,您可以使用它将它们写入数据库并进行查询和分析)
Kibana 是一个可视化工具,它可以让您探索和可视化您的数据,它非常强大,可以满足您的大多数需求
Logstash 可以集中处理数据并帮助您处理并保存在elasticsearch中,它已经支持很少的日志和事件源,您也可以编写自己的插件。
有些人将它们称为 ELK 堆栈。
我不相信您应该担心此时必须使用的编程语言,首先尝试选择工具,有时选择受到您想要使用的工具的限制,您仍然可以使用混合语言,只有在有意义的时候才能付出努力。
答案 2 :(得分:1)
解决此类要求的常用方法是使用Amazon Redshift及其周围的生态系统。
Redshift是一个peta规模的数据仓库(它也可以以千兆规模开始),它暴露了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/
BTW,Redshift还提供2个月的免费试用版,您可以快速测试并查看它是否符合您的需求:http://aws.amazon.com/redshift/free-trial/答案 3 :(得分:1)
大数据是一个棘手的问题,主要是因为它不是一个单一的问题。首先,如果您的原始数据库是一整天处理业务事务的普通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层。如果您这样做,那么您的网络图层可以使用您喜欢的任何语言构建。
答案 4 :(得分:0)
这三种语言最常用于服务器端的机器学习和数据挖掘:R,Python,SQL。如果你的目标是繁重的数学函数和图形生成,那么Haskell非常受欢迎。