2010-08-16 49 views
12

Estoy trabajando en una solución donde tendré un clúster Hadoop con Hive ejecutándose y quiero enviar trabajos y búsquedas de una aplicación .NET para que se procese y reciba notificaciones cuando Ellos están hechos. No puedo encontrar ninguna solución para interactuar con Hadoop que no sea directamente desde una aplicación Java, ¿hay alguna API a la que pueda acceder que no esté encontrando?Cómo conectarme a Hadoop/Hive desde .NET

Respuesta

9

Al parecer es posible conectarse a Hadoop con soluciones no Java - ver Do I have to write my application in Java?

+0

Ah, yo sabía sobre la transmisión (pero eso funciona desde la línea de comandos) - pero no sabía sobre las Hadoop Pipes que es compatible con SWIG, así que debería ser capaz de generar una API C# en la parte superior eso. –

3

API ahorro es también otra forma de otro idioma para acceder a hdfs y una colmena

8

Con Hadoop: no hay manera recta para conectarse desde C# porque el nivel de comunicación de Hadoop solo funciona con Java y no es multiplataforma. Probablemente sea posible, pero de maneras no triviales. Sé que hay un parche para agregar soporte de Protocol Buffers para Hadoop, pero en el momento de escribirlo (agosto de 2011) aún no se ha lanzado.

Con Hive la situación es mejor porque Hive tiene una interfaz Thrift que admite C#. Puede descargar las interfaces de Hive Thrift y generar el cliente de C# por su cuenta, pero tenga en cuenta que requiere algo de piratería de código generado. En su lugar, le recomendaría que descargue dll desde https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll o use el administrador de paquetes Nuget, busque "colmena": http://nuget.org/List/Packages/Hive.Sharp.Lib Descargo de responsabilidad: soy el autor.

7
  1. Hay un controlador ODBC de Hortonworks. No lo he usado personalmente, pero le permitirá trabajar con colmena como con cualquier otro datasource de ODBC. Puede usar la clase OdbcConnection para conectarse a Hive una vez que el controlador ODBC esté instalado.

  2. Como se indicó en otras respuestas, puede usar la aplicación de Ahorro. Para eso, necesita generar clases de C# a partir de los archivos de definición de interfaz, que puede descargar del repositorio de fuentes de Hive. Este enfoque funciona para mí.

  3. Puede usar IKVM, para convertir las bibliotecas de hadoop client java en ensamblados .Net que puede usar desde C#. No he usado IKVM con Hive Client, pero tengo IKVMed alguna otra biblioteca cliente de hadoop y, sorprendentemente, funcionó.

EDIT:

  1. También hay Apache Templeton, que permite enviar tareas de la colmena (cerdo) y MR también mediante la interfaz de descanso. El problema es que genera otra tarea de mapa para enviar trabajo Hive, lo que lo hace más lento.
3

Es posible acceder a la colmena utilizando C#, haciendo uso de conector ODBC de Microsoft. Descargar el paquete Nuget para "Microsoft.Hadoop.Hive" y siga el ejemplo proporcionado en http://msdn.microsoft.com/en-us/library/dn749834.aspx

El truco radica en la construcción de la cadena de conexión para conectar con ella. La mejor manera que se me ocurrió fue descargar el controlador ODBC de Microsoft Hive (http://www.microsoft.com/en-us/download/details.aspx?id=40886), instalarlo, luego utilizar el Explorador de servidores en Visual Studio para agregar una nueva conexión y luego crear la cadena de conexión para mí.Para ello, he utilizado los siguientes pasos:

  • Cambiar la fuente de datos a "Origen de datos ODBC de Microsoft" y asegurarse de que está utilizando el "Proveedor de datos de .NET Framework para ODBC" como el proveedor de datos.

Change Data Source Dialog Window

  • En la parte "especificaciones de la fuente de datos", compruebe el botón "Usar cadena de conexión" y luego haga clic en "Crear".

Add Connection Dialog Window

  • En la pestaña "Fuente de datos de equipo", seleccione el "ejemplo de Microsoft Colmena DSN" Nombre de origen de datos, haga clic en el botón "OK".

Select Data Source Dialog Window

  • una ventana titulada "Microsoft Colmena de conexión de controladores ODBC de diálogo" se abrirá. Ingrese una descripción opcional, luego escriba la ruta a su servidor Hive, el puerto que va a utilizar y la base de datos a la que se debe conectar. Indique el tipo de servidor de Hive, y especifique un mecanismo de autenticación para usar, luego llene los campos apropiados.

Microsoft Hive ODBC Driver Connection Dialog Window

  • Por último, haga clic en el botón "Test" en la parte inferior para asegurar que usted es capaz de conectarse correctamente. Si tiene éxito, haga clic en el botón "Aceptar", luego estará de vuelta en la ventana "Modificar conexión". Ingrese la información de inicio de sesión para su servicio Hive aquí.

O utilice esta fuente de datos o copie la cadena de conexión creada para usted y úsela dentro de su aplicación.

+0

¿Se puede usar esto para escribir datos en hdfs en lugar de colmena? –

0

biblioteca Uso de Hbase.Net https://hbasenet.codeplex.com/

A continuación, se puede conectar a hbase/colmena como se muestra a continuación:

 Client c = new Client("10.20.14.179", 9090, 1000000); 

     var cli = c.TotalClients; 

     var tableList = c.GetTableNames(); 

FYI, estamos utilizando Hortonworks caja de arena y se conecta muy bien.

En el ejemplo anterior, 10.20.14.179 es host y 9090 es port.

Además, a continuación podrían ayudar a https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html

No hay nativa C# HBase cliente. sin embargo, hay varias opciones para interactuar con HBase desde C#.

  1. C# HBase Thrift cliente - Thrift permite definir los extremos de servicio y modelos de datos en un formato común y el uso de generadores de código a crear enlaces específicos del lenguaje. HBase proporciona un servidor Thirft y definiciones . Hay muchos ejemplos en línea para crear un Thrift Client C# HBase .

  2. Marlin - Marlin es un cliente C# para interactuar con Stargate (HBASE REST API) que finalmente se convirtió en hbase-sdk-for-net. No he probado personalmente esto contra HBase 1.x +, pero considerando que usa Stargate, espero que funcione. Si planea usar Stargate e implementar su propio cliente, que recomendaría sobre Thrift, asegúrese de usar protobufs para evitar la serialización de JSON sobrecarga. El uso de un enfoque basado en HTTP también facilita las solicitudes de saldo de carga en múltiples puertas de enlace.

  3. Phoenix Query Server - Phoenix es un skin SQL en HBase. El servidor Phoenix Query es una API REST para enviar consultas SQL a Phoenix. Aquí está algún código de ejemplo, sin embargo, aún no lo he probado.

  4. Simba HBase Controlador ODBC: utilizando ODBC para conectarse a HBase. Escuché comentarios positivos sobre este enfoque, especialmente de herramientas como Tableau. Esto no es de código abierto y requiere comprar una licencia.

Cuestiones relacionadas