2010-08-16 38 views
12

Tôi đang làm việc trên một giải pháp mà tôi sẽ có một cụm Hadoop với Hive đang chạy và tôi muốn gửi các công việc và truy vấn hive từ một ứng dụng .NET được xử lý và được thông báo khi chúng đã được hoàn thành. Tôi không thể tìm thấy bất kỳ giải pháp nào để giao tiếp với Hadoop ngoài trực tiếp từ một ứng dụng Java, có API nào mà tôi có thể truy cập mà tôi không tìm thấy không?Làm cách nào để kết nối với Hadoop/Hive từ .NET

Trả lời

9

Rõ ràng chúng ta có thể kết nối với Hadoop với các giải pháp phi Java - xem Do I have to write my application in Java?

+0

Ah, tôi biết về phát trực tuyến (nhưng hoạt động từ dòng lệnh) - nhưng tôi không biết về Ống Hadoop tương thích SWIG nên tôi có thể tạo C# api trên đầu nó. –

3

Thrift API cũng là một cách cho ngôn ngữ khác để truy cập HDFS và hive

8

Với Hadoop: không có cách nào thẳng để kết nối từ C# bởi vì tầng giao tiếp Hadoop chỉ làm việc với java và không phải là nền tảng chéo. Nó có lẽ là có thể nhưng theo những cách rất không tầm thường. Tôi biết có một bản vá để thêm hỗ trợ Protocol Buffers cho Hadoop nhưng tại thời điểm viết (Aug 2011) vẫn chưa được phát hành.

Với tình hình Hive tốt hơn vì Hive có giao diện tiết kiệm hỗ trợ C#. Bạn có thể tải xuống các giao diện Hive Thrift và tự tạo C# client nhưng hãy cẩn thận rằng nó yêu cầu một số mã được tạo ra. Thay vào đó, tôi khuyên bạn nên tải xuống dll từ https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll hoặc sử dụng trình quản lý gói Nuget, tìm kiếm "hive": http://nuget.org/List/Packages/Hive.Sharp.Lib Tuyên bố từ chối trách nhiệm: Tôi là tác giả.

7
  1. Có trình điều khiển ODON Hortonworks. Tôi không sử dụng nó cá nhân, nhưng nó sẽ cho phép bạn làm việc với hive như với bất kỳ nguồn dữ liệu ODBC nào khác. Bạn có thể sử dụng lớp OdbcConnection để kết nối với Hive khi trình điều khiển ODBC được cài đặt.

  2. Như đã lưu ý trong các câu trả lời khác - bạn có thể sử dụng api Tiết kiệm. Để làm điều đó, bạn cần tạo các lớp C# từ các tệp định nghĩa giao diện, mà bạn có thể tải xuống từ kho lưu trữ nguồn Hive. Cách tiếp cận này làm việc cho tôi.

  3. Bạn có thể sử dụng IKVM, để chuyển đổi thư viện java của máy khách hadoop thành các hội đồng .Net mà bạn có thể sử dụng từ C#. Tôi không sử dụng IKVM với khách hàng Hive, nhưng tôi đã IKVMed một số thư viện máy khách hadoop khác và đáng ngạc nhiên nó đã làm việc.

EDIT:

  1. Ngoài ra còn có Apache templeton, cho phép trình công việc Hive (Pig và MR cũng) sử dụng giao diện Nghỉ ngơi. Vấn đề với nó là nó tạo ra một nhiệm vụ bản đồ khác để gửi công việc Hive, làm cho nó chậm hơn.
3

Có thể truy cập vào Hive sử dụng C# bằng cách sử dụng kết nối ODBC của Microsoft. Tải xuống gói Nuget cho "Microsoft.Hadoop.Hive" và làm theo ví dụ được cung cấp tại http://msdn.microsoft.com/en-us/library/dn749834.aspx

Bí quyết nằm trong việc tạo chuỗi kết nối để kết nối với nó. Cách tốt nhất tôi đã đưa ra là để tải xuống trình điều khiển Microsoft Hive ODBC (http://www.microsoft.com/en-us/download/details.aspx?id=40886), cài đặt nó, sau đó sử dụng máy chủ Explorer bên trong Visual Studio để thêm một kết nối mới, sau đó xây dựng chuỗi kết nối cho tôi.Để làm điều này, tôi đã sử dụng các bước sau:

  • Thay đổi nguồn dữ liệu để "Microsoft ODBC Data Source" và đảm bảo bạn đang sử dụng "Nhà cung cấp dữ liệu .NET Framework cho ODBC" là nhà cung cấp dữ liệu.

Change Data Source Dialog Window

  • Dưới sự "Dữ liệu đặc tả nguồn" phần, đánh dấu vào nút "Sử dụng chuỗi kết nối", sau đó bấm vào nút "Build".

Add Connection Dialog Window

  • Dưới mục "Máy Data Source" tab, chọn "Mẫu Microsoft Hive DSN" tên nguồn dữ liệu, sau đó nhấp vào nút "OK".

Select Data Source Dialog Window

  • Một cửa sổ có tiêu đề "Microsoft Hive ODBC driver kết nối Dialog" sẽ mở ra. Nhập mô tả tùy chọn, sau đó nhập đường dẫn đến máy chủ Hive của bạn, cổng bạn sẽ sử dụng và cơ sở dữ liệu nào cần kết nối. Cho biết Loại Máy chủ Hive và chỉ định cơ chế xác thực để sử dụng, sau đó điền vào các trường thích hợp.

Microsoft Hive ODBC Driver Connection Dialog Window

  • Cuối cùng, nhấn vào nút "Test" ở phía dưới để đảm bảo rằng bạn có thể kết nối thành công. Nếu thành công, hãy nhấp vào nút "OK", sau đó bạn sẽ trở lại trong cửa sổ "Sửa đổi kết nối". Nhập thông tin đăng nhập cho dịch vụ Hive của bạn tại đây.

Hoặc sử dụng nguồn dữ liệu này hoặc sao chép chuỗi kết nối được tạo cho bạn và sử dụng nó trong ứng dụng của bạn.

+0

Điều này có thể được sử dụng để ghi dữ liệu vào hdfs thay vì tổ ong không? –

0

Sử dụng Hbase.Net thư viện từ https://hbasenet.codeplex.com/

Sau đó, bạn có thể kết nối với HBase/hive như hình dưới đây:

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

     var cli = c.TotalClients; 

     var tableList = c.GetTableNames(); 

FYI, chúng tôi đang sử dụng hortonworks sandbox và nó kết nối tốt.

Trong ví dụ trên, 10.20.14.179 là máy chủ lưu trữ và 9090 là cổng.

Ngoài ra, dưới đây có thể giúp từ https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html

Không có nguồn gốc C# HBase khách hàng. tuy nhiên, có một số tùy chọn để tương tác với HBase từ C#.

  1. C# HBase Thrift khách hàng - tiết kiệm cho phép xác định các điểm cuối dịch vụ và các mô hình dữ liệu trong một định dạng phổ biến và sử dụng máy phát điện mã để tạo bindings ngôn ngữ cụ thể. HBase cung cấp máy chủ Thirft và các định nghĩa . Có rất nhiều ví dụ trực tuyến để tạo C# HBase Khách hàng Tiết kiệm.

  2. Marlin - Marlin là khách hàng C# để tương tác với Stargate (HBase REST API) mà cuối cùng đã trở thành hbase-sdk-cho-net. Tôi đã không đích thân kiểm tra này chống lại HBase 1.x +, nhưng xem xét nó sử dụng Stargate, tôi hy vọng nó sẽ làm việc. Nếu bạn định sử dụng Làm nổi bật và triển khai ứng dụng khách của riêng mình, mà tôi khuyên bạn nên sử dụng trên Tiết kiệm, hãy đảm bảo sử dụng protobuf để tránh việc serialization JSON trên không. Sử dụng phương pháp tiếp cận dựa trên HTTP cũng giúp việc yêu cầu số dư tải trên nhiều cổng trở nên dễ dàng hơn nhiều đối với các yêu cầu cân bằng tải .

  3. Máy chủ truy vấn Phoenix - Phoenix là một skin SQL trên HBase. Truy vấn Phoenix Máy chủ là một API REST để gửi truy vấn SQL đến Phoenix. Đây là một số mã ví dụ, tuy nhiên, tôi chưa thử nghiệm nó.

  4. Trình điều khiển ODBA HBBA ODBC - Sử dụng ODBC để kết nối với HBase. Tôi đã nghe thấy phản hồi tích cực về phương pháp này, đặc biệt là từ các công cụ như Hoạt cảnh. Đây không phải là nguồn mở và yêu cầu mua giấy phép.

Các vấn đề liên quan