Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tài liệu Big Data nguồn mở, Phần 1: Hướng dẫn Hadoop: Tạo ứng dụng Hello World với Java, Pig, Hive,
PREMIUM
Số trang
58
Kích thước
734.3 KB
Định dạng
PDF
Lượt xem
1652

Tài liệu Big Data nguồn mở, Phần 1: Hướng dẫn Hadoop: Tạo ứng dụng Hello World với Java, Pig, Hive,

Nội dung xem thử

Mô tả chi tiết

Big Data nguồn mở, Phần 1: Hướng dẫn Hadoop: Tạo ứng

dụng Hello World với Java, Pig, Hive, Flume, Fuse, Oozie và

Sqoop với Informix, DB2 và MySQL

Có rất nhiều điều thú vị về Big Data và cũng có rất nhiều sự nhầm lẫn về nó. Bài

này sẽ cung cấp một định nghĩa về Big Data và sau đó thực hiện một loạt các ví dụ

để bạn có thể có được những hiểu biết ban đầu về một số khả năng của Hadoop,

công nghệ nguồn mở hàng đầu trong lĩnh vực Big Data. Cụ thể, ta tập trung vào

những câu hỏi sau:.

 Big Data, Hadoop, Sqoop, Hive và Pig là gì và tại sao lĩnh vực này lại có

nhiều điều thú vị?

 Hadoop liên quan đến DB2 và Informix của IBM như thế nào? Các công

nghệ này có thể chạy với nhau không?

 Tôi có thể bắt đầu với Big Data như thế nào? Có ví dụ nào dễ để thử chạy

trên máy tính không?

 Nếu bạn đã biết khái niệm về Hadoop rồi và muốn vào thẳng công việc với

các ví dụ mẫu, thì hãy làm như sau.

1. Hãy bắt đầu chạy một thể hiện Informix hoặc DB2 của bạn.

2. Tải về file ảnh cho máy ảo VMWare từ Trang web của Cloudera và

tăng thông số RAM máy ảo lên thành 1,5 GB.

3. Chuyển đến mục chứa các ví dụ mẫu.

4. Có một thể hiện MySQL đã được xây dựng sẵn trong máy ảo

VMWare này. Nếu bạn đang làm các bài thực hành mà không kết nối

mạng, hãy sử dụng các ví dụ MySQL này.

Ngoài ra, xin vui lòng xem tiếp...

Big Data là gì?

Big Data lớn về số lượng, được bắt giữ với tốc độ nhanh, có cấu trúc hoặc không

có cấu trúc, hoặc là bao gồm các yếu tố ở trên. Những yếu tố này làm cho Big Data

khó bắt giữ lại, khai phá và quản lý nếu dùng các phương thức truyền thống. Có rất

nhiều ý kiến về lĩnh vực này, đến nỗi có thể cần đến một cuộc tranh luận kéo dài

chỉ để định nghĩa thế nào là Big Data.

Sử dụng công nghệ Big Data không chỉ giới hạn về các khối lượng lớn. Bài này sử

dụng các ví dụ mẫu nhỏ để minh họa các khả năng của công nghệ này. Tính đến

năm 2012, các hệ thống được coi là lớn nằm trong phạm vi 100 Petabyte.

Dữ liệu lớn có thể vừa là dữ liệu có cấu trúc, vừa là dữ liệu không có cấu trúc. Các

cơ sở dữ liệu quan hệ truyền thống, như Informix và DB2, cung cấp các giải pháp

đã được kiểm chứng với dữ liệu có cấu trúc. Thông qua khả năng mở rộng, các cơ

sở dữ liệu này cũng quản lý cả dữ liệu không có cấu trúc. Công nghệ Hadoop mang

đến những kỹ thuật lập trình mới và dễ sử dụng hơn để làm việc với các kho dữ

liệu lớn có cả dữ liệu có cấu trúc lẫn dữ liệu không có cấu trúc.

Về đầu trang

Tại sao lại có những điều thú vị ấy?

Có nhiều yếu tố tạo nên sự cường điệu xoay quanh Big Data, bao gồm:.

 Mang tính toán và lưu trữ lại cùng với nhau trên phần cứng thông dụng: Cho

kết quả tốc độ nhanh với chi phí thấp.

 Tỷ số giá hiệu năng: Công nghệ Big Data của Hadoop đưa ra mức tiết kiệm

chi phí đáng kể (hãy nghĩ đến một hệ số nhân xấp xỉ 10) với những cải thiện

hiệu năng đáng kể (một lần nữa, hãy nghĩ đến một hệ số nhân là 10). Lời lãi

của bạn có thể thay đổi. Nếu công nghệ hiện tại có thể bị đánh bại nặng nề

như vậy, thì thật đáng để xem xét xem Hadoop có thể bổ sung hoặc thay thế

các khía cạnh của kiến trúc hiện tại của bạn không.

 Khả năng mở rộng quy mô tuyến tính: Tất cả các công nghệ song song đều

tuyên bố dễ mở rộng quy mô. Hadoop có khả năng mở rộng quy mô kể từ

khi phát hành bản mới nhất có khả năng mở rộng giới hạn số lượng các nút

vượt quá 4.000.

 Truy cập đầy đủ đến dữ liệu không có cấu trúc: Một kho dữ liệu có thể mở

rộng quy mô cao với một mô hình lập trình song song thích hợp,

MapReduce, đã là một thách thức cho ngành công nghiệp từ lâu nay. Mô

hình lập trình của Hadoop không giải quyết tất cả vấn đề, nhưng nó là một

giải pháp mạnh cho nhiều nhiệm vụ.

Các bản phân phối Hadoop: IBM và Cloudera

Đối với những người mới bắt đầu thì họ thường bối rối rằng "Tôi có thể tìm phần

mềm để làm việc với Big Data ở đâu?" Các ví dụ trong bài này đều dựa trên bản

phân phối Hadoop miễn phí của Cloudera được gọi là CDH (viết tắt của Cloudera

distribution including Hadoop). Bản phân phối này có sẵn dưới dạng một file ảnh

máy ảo VMWare từ trang web Cloudera. Gần đây IBM đang sửa đổi nền tảng Big

Data của mình để chạy trên CDH. Xem thông tin chi tiết trong phần Tài nguyên.

Thường thì thuật ngữ công nghệ đột phá bị lạm dụng rất nhiều, nhưng có thể nó rất

phù hợp trong trường hợp này.

Về đầu trang

Hadoop là gì?

Dưới đây là một vài định nghĩa về Hadoop, mỗi định nghĩa nhắm vào một nhóm

đối tượng khác nhau trong doanh nghiệp:

 Đối với các giám đốc điều hành: Hadoop là một dự án phần mềm nguồn mở

của Apache để thu được giá trị từ khối lượng/ tốc độ/ tính đa dạng đáng kinh

ngạc của dữ liệu về tổ chức của bạn. Hãy sử dụng dữ liệu thay vì vứt bỏ hầu

hết dữ liệu đó đi.

 Đối với các giám đốc kỹ thuật: Hadoop là một bộ phần mềm nguồn mở để

khai phá Big Data có cấu trúc và không có cấu trúc về công ty của bạn. Nó

tích hợp với hệ sinh thái Business Intelligence của bạn.

 Đối với nhân viên pháp lý: Hadoop là một bộ phần mềm nguồn mở được

nhiều nhà cung cấp đóng gói và hỗ trợ. Hãy xem phần Tài nguyên về việc

trả tiền sở hữu trí tuệ (IP).

 Đối với các kỹ sư: Hadoop là một môi trường song song thực thi map-reduce

dựa trên Java, không chia sẻ gì cả. Hãy nghĩ đến hàng trăm, hàng ngàn máy

tính đang làm việc để giải quyết cùng một vấn đề, có khả năng khôi phục lỗi

dựng sẵn. Các dự án trong hệ sinh thái Hadoop cung cấp khả năng load (tải)

dữ liệu, hỗ trợ ngôn ngữ cấp cao, triển khai trên đám mây tự động và các khả

năng khác.

 Đối với chuyên gia bảo mật: Hadoop là một bộ phần mềm bảo mật￾Kerberos.

Hadoop có những thành phần nào?

Dự án Hadoop của Apache có hai thành phần cốt lõi, kho lưu trữ tệp gọi là Hadoop

Distributed File System (HDFS – Hệ thống tệp phân tán Hadoop) và khung công

tác lập trình gọi là MapReduce. Có một số dự án hỗ trợ để sử dụng HDFS và

MapReduce. Bài này sẽ cung cấp một cái nhìn sơ lược, bạn hãy tìm đọc cuốn sách

của OReily "Hadoop The Definitive Guide", tái bản lần thứ 3, để biết thêm chi tiết.

Các định nghĩa dưới đây nhằm cung cấp cho bạn những thông tin cơ bản để sử

dụng các ví dụ mã tiếp theo. Bài này thực sự mong muốn giúp bạn bắt đầu bằng

trải nghiệm thực hành với công nghệ này. Đây là một bài hướng dẫn hơn là bài hỏi

đáp thảo luận.

 HDFS: Nếu bạn muốn có hơn 4000 máy tính làm việc với dữ liệu của bạn,

thì tốt hơn bạn nên phổ biến dữ liệu của bạn trên hơn 4000 máy tính đó.

HDFS thực hiện điều này cho bạn. HDFS có một vài bộ phận dịch chuyển.

Các Datanode (Nút dữ liệu) lưu trữ dữ liệu của bạn và Namenode (Nút tên)

theo dõi nơi lưu trữ các thứ. Ngoài ra còn có những thành phần khác nữa,

nhưng như thế đã đủ để bắt đầu.

 MapReduce: Đây là mô hình lập trình cho Hadoop. Có hai giai đoạn, không

ngạc nhiên khi được gọi là Map và Reduce. Để gây ấn tượng với các bạn bè

của bạn hãy nói với họ là có một quá trình shuffle-sort (ND.: một quá trình

mà hệ thống thực hiện sắp xếp và chuyển các kết quả đầu ra của map tới các

đầu vào của các bộ rút gọn) giữa hai giai đoạn Map và Reduce. JobTracker

(Trình theo dõi công việc) quản lý hơn 4000 thành phần công việc

MapReduce. Các TaskTracker (Trình theo dõi nhiệm vụ) nhận các lệnh từ

JobTracker. Nếu bạn thích Java thì viết mã bằng Java. Nếu bạn thích SQL

hoặc các ngôn ngữ khác không phải Java thì rất may là bạn có thể sử dụng

một tiện ích gọi là Hadoop Streaming (Luồng dữ liệu Hadoop).

 Hadoop Streaming: Một tiện ích để tạo nên mã MapReduce bằng bất kỳ

ngôn ngữ nào: C, Perl, Python, C++, Bash, v.v. Các ví dụ bao gồm một trình

mapper Python và một trình reducer AWK.

 Hive và Hue: Nếu bạn thích SQL, bạn sẽ rất vui khi biết rằng bạn có thể viết

SQL và yêu cầu Hive chuyển đổi nó thành một tác vụ MapReduce. Đúng là

bạn chưa có một môi trường ANSI-SQL đầy đủ, nhưng bạn có 4000 ghi

chép và khả năng mở rộng quy mô ra nhiều Petabyte. Hue cung cấp cho bạn

một giao diện đồ họa dựa trên trình duyệt để làm công việc Hive của bạn.

 Pig: Một môi trường lập trình mức cao hơn để viết mã MapReduce. Ngôn

ngữ Pig được gọi là Pig Latin. Bạn có thể thấy các quy ước đặt tên hơi khác

thường một chút, nhưng bạn sẽ có tỷ số giá-hiệu năng đáng kinh ngạc và

tính sẵn sàng cao.

 Sqoop: Cung cấp việc truyền dữ liệu hai chiều giữa Hadoop và cơ sở dữ liệu

quan hệ yêu thích của bạn.

 Oozie: Quản lý luồng công việc Hadoop. Oozie không thay thế trình lập lịch

biểu hay công cụ BPM của bạn, nhưng nó cung cấp cấu trúc phân nhánh if￾then-else và điều khiển trong phạm vi tác vụ Hadoop của bạn.

 HBase: Một kho lưu trữ key-value có thể mở rộng quy mô rất lớn. Nó hoạt

động rất giống như một hash-map để lưu trữ lâu bền (với những người hâm

mộ python, hãy nghĩ đến một từ điển). Nó không phải là một cơ sở dữ liệu

quan hệ, mặc dù có tên là HBase.

 FlumeNG: Trình nạp thời gian thực để tạo luồng dữ liệu của bạn vào

Hadoop. Nó lưu trữ dữ liệu trong HDFS và HBase. Bạn sẽ muốn bắt đầu với

FlumeNG, để cải thiện luồng ban đầu.

 Whirr: Cung cấp Đám mây cho Hadoop. Bạn có thể khởi động một hệ thống

chỉ trong vài phút với một tệp cấu hình rất ngắn.

 Mahout: Máy học dành cho Hadoop. Được sử dụng cho các phân tích dự báo

và phân tích nâng cao khác.

 Fuse: Làm cho hệ thống HDFS trông như một hệ thống tệp thông thường, do

đó bạn có thể sử dụng lệnh ls, cd, rm và những lệnh khác với dữ liệu HDFS.

 Zookeeper: Được sử dụng để quản lý đồng bộ cho hệ thống. Bạn sẽ không

phải làm việc nhiều với Zookeeper, nhưng nó sẽ làm việc rất nhiều cho bạn.

Nếu bạn nghĩ rằng bạn cần viết một chương trình có sử dụng Zookeeper thì

bạn hoặc là rất, rất thông minh và bạn có thể là một ủy viên cho một dự án

Apache hoặc bạn sắp có một ngày rất tồi tệ.

Hình 1 cho thấy các phần quan trọng của Hadoop.

Hình 1. Kiến trúc Hadoop

HDFS, tầng dưới cùng, nằm trên một cụm phần cứng thông thường. Các máy chủ

lắp vào tủ khung (rack-mounted) đơn giản, mỗi máy chủ có các CPU lõi 2-Hex, 6

đến 12 đĩa và 32 Gb ram. Đối với một công việc map-reduce, tầng trình ánh xạ đọc

từ các đĩa ở tốc độ rất cao. Trình ánh xạ phát ra các cặp khóa giá trị được sắp xếp

và được đưa tới trình rút gọn và tầng trình rút gọn tóm lược các cặp key-value.

Không, bạn không phải tóm lược các cặp key-value, trên thực tế bạn có thể có một

tác vụ map-reduce chỉ có có các trình ánh xạ. Điều này sẽ trở nên dễ hiểu hơn khi

bạn xem ví dụ python-awk.

Hadoop tích hợp với cơ sở hạ tầng Informix hoặc DB2 như thế nào?

Hadoop tích hợp rất tốt với cơ sở dữ liệu Informix và cơ sở dữ liệu DB2 thông qua

Sqoop. Sqoop là công cụ nguồn mở hàng đầu để di chuyển dữ liệu giữa Hadoop và

các cơ sở dữ liệu quan hệ. Nó sử dụng JDBC để đọc và viết vào Informix, DB2,

MySQL, Oracle và các nguồn khác. Có các bộ thích ứng được tối ưu hoá cho một

vài cơ sở dữ liệu, bao gồm Netezza và DB2. Hãy xem phần Tài nguyên về cách tải

về các bộ thích ứng này. Tất cả các ví dụ đều là đặc trưng của Sqoop.

Tải ngay đi em, còn do dự, trời tối mất!