在我们正在运行的项目中,使用带有 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 个数据插入和事务处理
3 回答
我会分享一些我的经验。首先,我会分析 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;
正如许多其他人指出的那样,4TB 的数据库并不是迁移到 Hadoop + Hive 的理由。必须有一个您无法用 MS SQL 解决的痛点来寻找选项。
就像一个想法,您是否考虑过迁移到 Azure,以便您的基础架构可以与您一起发展?
我认为 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。