2

在我们正在运行的项目中,使用带有 C# 和 MS SQL 的 ASP.net 3.5,目前其数据库大小为 4 TB。它会增加 gradullay ,所以我们正在寻找解决方案。有人告诉我 BigData(使用 Hive + Hadoop)。他给出了以下参考 https://cwiki.apache.org/confluence/display/Hive/GettingStarted http://www.codeproject.com/Articles/398563/Analyzing-some-Big-Data-Using-Csharp- Azure-And-Apa 我读过这两个链接,但不幸的是我不明白它们的意思!!!。所以任何1解释我该怎么做?我应该将 MSSQL 迁移到 Hadoop 吗?请告知更改为hadoop的硬件和软件要求?是否可以将我们当前的数据库迁移到hadoop?我已经阅读了一些主要用于搜索数据并且不支持多事务的软件?如果可以迁移,那么我们希望与现有项目合作多少?在这么多 TB 上,我们每秒有 400-500 个数据插入和事务处理

4

3 回答 3

6

我会分享一些我的经验。首先,我会分析 Hadoop 是否符合我的要求。Hadoop 不是传统 RDBMS 的替代品。它用于完全不同的目的,这offline batch processing与用于实时查询的 RDBMS 不同。因此,如果您有实时需求,您最好再考虑一下。在这种情况下,您将需要类似HBase的东西。

您在此处显示的第一个链接是关于Hive的。Hive 是一个运行在现有 Hadoop 集群之上的数据仓库。除此之外,它还为您提供了一个类似 SQL 的界面,如果您来自 SQL 背景,它可以让您更轻松地以更轻松便捷的方式进行查询。Hive 将数据作为 Hive 表存储在 HDFS(Hadoop 文件系统)之上。但同样 Hive 不适合实时的东西。如果您想对 Hadoop 数据执行实时查询,您可能会发现Impala非常适合。

第二个链接向您展示了如何将 Apache Hadoop 与 C# 和 Microsoft Windows Azure 一起使用。Azure 是 Microsoft 的云平台产品。您可以在此处找到更多相关信息。此链接向您展示如何编写MapReduce程序。MapReduce 是一个计算框架,允许您以分布式和并行的方式在机器集群上处理大量数据。

最初开发 Hadoop 是为了与 Linux 一起使用。但现在您也可以灵活地将它与 Windows 一起使用,提供 Azure 和HDP等解决方案。

Hadoop 不需要任何特殊软件(除了 ssh、适当的语言翻译器等基本的东西)或复杂的硬件。它旨在在商品硬件上运行。但是您可能想保留供应商规定的规格,您将遵循,牢记。

您可以通过编写自己的程序或使用更高级的工具(如Sqoop )轻松地将 SQL 数据移动到 Hadoop 集群中。

搜索并不是使用 Hadoop 的唯一领域。这是一个非常好的链接,它告诉我们可以使用 Hadoop 解决的常见问题。

希望这能回答你的一些问题。如果您有任何进一步的疑问,请告诉我。


回应您的评论:

Hadoop 基本上是两件事——分布式文件系统(HDFS)和处理框架(MapReduce)。作为一个文件系统,它缺乏随机读/写能力。这就是像 HBase 这样的数据库出现的地方。此外,Hadoop 将数据存储为文件,而不是 HBase 的列。

如果您想通过 Hive 查询存储在 HDFS 中的数据,您可以将 HDFS 文件映射为 Hive 中的表并使用 HiveQL 查询它们。假设您在 HDFS 中有一个名为“file.txt”的文件,其中包含 2 个字段编号和名称,您将执行以下操作:

hive> CREATE TABLE demo (no INT, name STRING);
hive> LOAD DATA INPATH '/file.txt' INTO TABLE demo;
hive> Select * FROM demo;
于 2013-06-10T17:54:15.740 回答
0

正如许多其他人指出的那样,4TB 的数据库并不是迁移到 Hadoop + Hive 的理由。必须有一个您无法用 MS SQL 解决的痛点来寻找选项。

就像一个想法,您是否考虑过迁移到 Azure,以便您的基础架构可以与您一起发展?

于 2015-12-21T02:38:13.937 回答
0

我认为 Sqoop 是将数据从 MS SQL 数据库导入 Hadoop 文件系统所需的工具。它可以跟踪已经从哪个表导入了哪些数据,因此不会再次导入数据。

下面是它的工作原理:

sqoop import --connect 'jdbc:sqlserver://<IP>;username=dbuser;password=dbpasswd;database=<DB>' --table <table> --target-dir /path/to/hdfs/dir 

记录可以存储为文本文件(每行一条记录),或以二进制表示形式存储为 Avro 或 SequenceFiles。

使用sqoop export命令,您可以从 HDFS 导出回 MS SQL Server。

于 2017-10-02T14:16:12.160 回答