2

最近,Exploring Microsoft HDInsight Hadoop for Windows。但是不知道从哪里开始,开始使用 apache hadoop with c# / asp.net mvc。

我知道http://hadoopsdk.codeplex.com/是最好的可用资源,但找不到从头开始的文档?比如创建集群、数据库,然后将其连接到 C# 应用程序。

4

4 回答 4

5

最简单的入门方法是使用Azure 上的 HDInsight 服务(仍处于预览阶段,但运行良好)。这样,您只需登录您的 azure 门户并启动一个集群,该集群将链接到您的 azure 存储。

如果实在不想上云,那么可以通过web平台安装器下载HDInsight开发者预览包,会创建一个单节点本地集群。或者,如果您对“just hadoop”感兴趣,那么您可以尝试使用 Hortonworks 或 Cloudera 提供的 VM。

之后,如果您熟悉 SQL,则可能值得从 Hive 开始。O'Reilly Definitive Guide to Hadoop在这方面做得很好。

从 .NET 的角度来看,codeplex 上的hadoopsdk是一个很好的起点。

就非常基本的连接示例而言,请尝试此博客作为示例,但请注意 HDInsight 的连接略有不同,现在它都使用 Templeton 接口,所以这会让你开始:

var db = new HiveConnection(
        webHCatUri: new Uri("http://localhost:50111"),
        userName: (string) "hadoop", password: (string) null);
var result = db.ExecuteHiveQuery("select * from w3c");

如果您希望在 HDInsight 上全面了解 MapReduce,那么您可能需要查看 C# MapReduce 示例以及 codeplex 上的 sdk。

请注意,默认的 HDInsight 安装还附带了一些很好的示例,其中包括一些可供使用的数据以及一些 powershell 脚本和 .NET 代码以帮助您入门。

享受!

于 2013-08-12T10:19:33.473 回答
1

您可能会发现HBase-sharp项目很有用。您可以访问他们的 bitbucket页面以获取详细信息。对我来说看起来很有希望。它还包括一个例子。你可以在这里找到它。

高温高压

于 2013-07-25T20:11:42.287 回答
1

从 HDInsight 团队查看https://github.com/hdinsight/hbase-sdk-for-net

于 2014-11-06T21:34:21.513 回答
0

微软于 6 月在Nuget.org 上发布了他们用于 Phoenix/Hbase 的 .NET ProtoBuf 客户端的预览版。我发现它运行良好,但 API 对我来说并不熟悉。据我了解,我围绕它实现了一个 .NET Framework System.Data IDbConnection、IDbCommand 等包装 API,名为 Garuda.Data。它使从 .NET 代码访问 Phoenix/Hbase 感觉就像 SQL Server 的 SqlConnection、SqlCommand 等 - 看看:https ://www.nuget.org/packages/Garuda.Data/

这是 github 项目仓库:https ://github.com/dwdii/GarudaUtil

还有一些示例代码:

using (IDbConnection phConn = new PhoenixConnection())
{
    phConn.ConnectionString = cmdLine.ConnectionString;

    phConn.Open();

    using (IDbCommand cmd = phConn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM GARUDATEST";
        using (IDataReader reader = cmd.ExecuteReader())
        {
            while(reader.Read())
            {
                for(int i = 0; i < reader.FieldCount; i++)
                {
                    Console.WriteLine(string.Format("{0}: {1}", reader.GetName(i), reader.GetValue(i)));
                }
            }
        }
    }                        
}
于 2016-08-30T01:05:18.517 回答