Tự học Hadoop - Giờ 1: Bắt đầu với Hadoop

Tự học Hadoop - Giờ 1: Bắt đầu với Hadoop

Dữ liệu lớn (Big data)Hadoop có mối liên kết chặt chẽ với nhau. Ban đầu là một nền tảng tìm kiếm cho đến vô số ứng dụng hiện tại trải dài từ datawarehouse đến event processing đến học máy (machine learning), Hadoop đã tạo ra cuộc cách mạng về dữ liệu sâu sắc. Trong phần này chúng tôi giới thiệu về nền tảng và lịch sử phát triển Hadoop cũng như các khái niệm cốt lõi của Hadoop và các trường hợp sử dụng điển hình

Hadoop và một lịch sử tóm tắt về dữ liệu lớn

Tập hợp các phương pháp lưu trữ và xử lý thường được gọi là “Dữ liệu lớn” xuất hiện từ các nhà cung cấp công cụ tìm kiếm vào đầu những năm 2000, chủ yếu là Google và Yahoo!

Các nhà cung cấp công cụ tìm kiếm là nhóm người dùng đầu tiên phải đối mặt với các vấn đề về quy mô Internet, chủ yếu là cách xử lý và lưu trữ các chỉ mục của tất cả các tài liệu trong toàn bộ không gian Internet. Đây dường như là một thách thức không thể vượt qua vào thời điểm đó, mặc dù toàn bộ nội dung trên Internet chỉ là một phần nhỏ so với ngày nay.

Yahoo! và Google độc lập bắt đầu phát triển một tập hợp các khả năng để đáp ứng thách thức này. Năm 2003, Google phát hành bài báo có tên “The Google File System”. Sau đó, vào năm 2004, Google đã phát hành một bài báo khác có tên “MapReduce: Simplified Data Processing on Large Clusters.”. Đồng thời, tại Yahoo!, Doug Cutting (người thường được công nhận là người đầu tiên tạo ra Hadoop) đang làm việc cho một dự án lập chỉ mục web có tên là Nutch.

Các bài báo của Google đã truyền cảm hứng cho Doug Cutting thực hiện công việc anh ấy đã thực hiện cho đến nay trong dự án Nutch và kết hợp các nguyên tắc lưu trữ và xử lý được nêu trong các bài báo này. Sản phẩm thu được là thứ ngày nay được gọi là Hadoop

Hadoop ra đời năm 2006 như một dự án mã nguồn mở theo chương trình cấp phép của Apache Software Foundation

  • Sự phát triển nhanh chóng của thương mại điện tử
  • Sự ra đời và phát triển nhanh chóng của Internet di động
  • Blog và nội dung web do người dùng điều khiển
  • Truyền thông xã hội

Những đổi mới này dần dần dẫn đến cái mà ngày nay được gọi là cơn lũ dữ liệu. Điều này đã thúc đẩy sự mở rộng của phong trào Dữ liệu lớn và dẫn đến sự xuất hiện của các dự án liên quan khác như Spark, hệ thống nhắn tin mã nguồn mở và nền tảng NoSQL, tất cả những dự án này sẽ thảo luận chi tiết hơn ở phần sau của cuốn sách này. Còn bây giờ hãy bắt đầu với Hadoop

Giới thiệu về Hadoop

Hadoop là một nền tảng lưu trữ và xử lý dữ liệu, dựa trên một khái niệm: vị trí dữ liệu. Vị trí dữ liệu đề cập đến việc xử lý vị trí dữ liệu bằng cách đưa tính toán vào dữ liệu, thay vì mô hình yêu cầu dữ liệu điển hình từ vị trí của nó (ví dụ: hệ thống quản lý cơ sở dữ liệu) và gửi dữ liệu này đến máy chủ hoặc hệ thống xử lý từ xa

Với quy mô dữ liệu hiện nay trên Internet—“Dữ liệu lớn”—việc di chuyển khối lượng lớn dữ liệu cần thiết để xử lý qua mạng vào thời điểm tính toán là không còn hiệu quả hoặc thậm chí không thể thực hiện được trong một số trường hợp. Hadoop cho phép các tập Dữ liệu lớn được xử lý cục bộ trên các nút của cụm bằng cách sử dụng phương pháp không chia sẻ gì, trong đó mỗi nút có thể xử lý độc lập một tập hợp con nhỏ hơn nhiều của toàn bộ tập dữ liệu mà không cần giao tiếp với nhau

Hadoop không có lược đồ đối với các hoạt động ghi của nó (nó được gọi là hệ thống đọc trên lược đồ). Điều này có nghĩa là nó có thể lưu trữ và xử lý nhiều loại dữ liệu, từ tài liệu văn bản phi cấu trúc đến JSON bán cấu trúc (Ký hiệu đối tượng JavaScript) hoặc tài liệu XML, đến các trích xuất có cấu trúc tốt từ các hệ thống cơ sở dữ liệu quan hệ

Các hệ thống schema-on-read là một sự khởi đầu cơ bản từ các cơ sở dữ liệu quan hệ mà chúng ta đã quen thuộc, ngược lại, được phân loại rộng rãi thành các hệ thống lược đồ trên ghi, trong đó dữ liệu thường được nhập mạnh và một lược đồ được xác định trước và thực thi khi INSERT , UPDATE, hoặc UPSERT. Các nền tảng NoSQL (chẳng hạn như Apache HBase hoặc Cassandra) cũng thường được phân loại là các hệ thống đọc lược đồ. Bạn sẽ tìm hiểu thêm về các nền tảng NoSQL ở phần sau của cuốn sách này

Vì lược đồ không được diễn giải trong các thao tác ghi vào Hadoop nên không có chỉ mục, số liệu thống kê hoặc cấu trúc nào khác thường được các hệ thống cơ sở dữ liệu sử dụng để tối ưu hóa các thao tác truy vấn và lọc hoặc giảm lượng dữ liệu trả về cho máy khách. Điều này tiếp tục đòi hỏi yêu cầu về địa phương dữ liệu.

Hadoop được thiết kế để “tìm kim trong đống cỏ khô,” làm như vậy bằng cách chia và giải quyết một vấn đề lớn thành một tập hợp các vấn đề nhỏ hơn bằng cách áp dụng các khái niệm về vị trí dữ liệu và không chia sẻ gì như đã giới thiệu trước đây.

Thành phần "cốt lõi" của Hadoop

Hadoop có các thành phần cốt lõi: Hệ thống tệp phân tán Hadoop (HDFS), YARN (viết tắt của Yet Another Resource Negotiator).

  • HDFS là một hệ thống tệp phân tán Hadoop để lưu trữ các tệp lớn trên cụm máy. HDFS thực hiện phân đoạn dữ liệu và phân phối dữ liệu trên các máy khác nhau.
  •  MapReduce được coi là “trái tim” của Hadoop. Nó là một mô hình lập trình được thiết kế để xử lý dữ liệu phân tán được lưu trữ song song, bằng cách chia công việc thành một tập hợp các nhiệm vụ độc lập.
  • YARN là viết tắt của cụm từ “Yet-Another-Resource-Negotiator” là một framework hỗ trợ phát triển ứng dụng phân tán.

Mỗi thành phần độc lập với nhau và có thể hoạt động trong cluster riêng của nó; ví dụ: cluster HDFS và cluster YARN có thể hoạt động độc lập. Tuy nhiên, khi chúng được đặt cùng vị trí với nhau, sự kết hợp của cả hai hệ thống được coi là cluster Hadoop

Chúng ta sẽ tìm hiểu chi tiết hơn về từng thành phần cốt lõi bao gồm chức năng và các phần bên trong của nó trong vài bài tiếp theo.

Thành phần hệ sinh thái Hadoop

Bất kỳ dự án nào khác tương tác hoặc tích hợp với Hadoop theo một cách nào đó—ví dụ: các dự án nhập dữ liệu như Flume hoặc Sqoop hoặc các công cụ phân tích dữ liệu như Pig hoặc Hive—được gọi là các dự án “hệ sinh thái” Hadoop. Theo nhiều cách, bạn có thể coi Spark là một dự án hệ sinh thái, mặc dù điều này có thể gây tranh cãi vì Spark không yêu cầu Hadoop để có thể hoat động.

Hình sau mô tả toàn cảnh hệ sinh thái Hadoop. Đây không phải là một danh sách toàn diện—còn nhiều dự án hệ sinh thái khác. Trên thực tế, các tiện ích của hệ sinh thái bao gồm nhiều danh mục bổ sung bao gồm quản trị, quản lý, học máy, tìm kiếm, điều phối quy trình làm việc, v.v. Hệ sinh thái liên tục phát triển với các dự án mới được ươm tạo hoặc nâng cấp lên phiên bản tốt hơn một cách thường xuyên, vì vậy, thách thức của bạn là luôn cập nhật các dự án mới và đang nổi.

Trong suốt loạt bài này, tôi sẽ giới thiệu cho bạn các dự án hệ sinh thái quan trọng, bao gồm Spark, Hive và nhiều dự án khác

Tổng quan về thương mại Hadoop

Mặc dù Hadoop là một dự án nguồn mở nhưng có nhiều nhà cung cấp thương mại cung cấp các bản phân phối thương mại, hỗ trợ, tiện ích quản lý, v.v. Năm 2008, nhà cung cấp thương mại đầu tiên, Cloudera, được thành lập bởi các kỹ sư từ Google, Yahoo! và Facebook, cùng với Mike Olson, giám đốc điều hành của Oracle trước đây là Giám đốc điều hành của Sleepycat Software, người tạo ra BerkleyDB (một công cụ cơ sở dữ liệu nhúng nguồn mở) . Cloudera sau đó đã phát hành bản phân phối thương mại đầu tiên của Hadoop, được gọi là CDH (Cloudera Distribution of Hadoop)

Vào năm 2009, MapR được thành lập với tư cách là một công ty cung cấp giải pháp phần mềm “có nguồn gốc từ Hadoop” triển khai bản điều chỉnh tùy chỉnh của hệ thống tệp Hadoop (được gọi là MapRFS) với khả năng tương thích API Hadoop. Vào năm 2011, Hortonworks đã được tách ra khỏi Yahoo! với tư cách là nhà cung cấp Hadoop cung cấp bản phân phối có tên HDP (Nền tảng dữ liệu Hortonworks).

Cloudera, Hortonworks và MapR được gọi là các nhà cung cấp Hadoop “thuần túy” vì mô hình kinh doanh của họ được thành lập dựa trên Hadoop. Nhiều nhà cung cấp khác sẽ làm theo với bản phân phối của riêng họ — chẳng hạn như IBM, Pivotal và Teradata. Tuy nhiên, Hadoop không nhất thiết phải là hoạt động kinh doanh cốt lõi của họ, không giống như các nhà cung cấp thuần túy.

Vào cuối năm 2014, sáng kiến Nền tảng Dữ liệu Mở (ODPi) được thành lập bởi Hortonworks đã được công bố. ODPi được thành lập để cung cấp một bộ lõi Hadoop và các thành phần hệ sinh thái được chọn nhất quán, sẵn sàng cho thương mại. Các nhà cung cấp khác, bao gồm IBM, Teradata, SAS và Pivotal, đã tham gia liên minh này, cho phép họ tận dụng cơ sở mã ODPi với các giải pháp của họ

Các trường hợp sử dụng Hadoop điển hình

Hadoopvề cơ bản là một hệ thống tệp phân tán có thể mở rộng tuyến tính và SDK xử lý song song (software development kit) và do đó, nó có rất nhiều công dụng. Tuy nhiên, việc triển khai Hadoop quy mô lớn điển hình có xu hướng rơi vào một trong số ít danh mục. Chúng bao gồm những trường hợp sau đây:

  • Kho dữ liệu, trích tải biến đổi (ELT), trích biến tải (ETL) giảm tải
  • Sự kiện và xử lý sự kiện phức tạp
  • Khai thác dữ liệu và học máy (phân tích nâng cao)

Hãy xem xét từng cái với một số ví dụ.

Data warehouse offload

Có lẽ cách sử dụng phổ biến nhất đối với Hadoop, giảm tải kho dữ liệu, là quá trình sử dụng Hadoop để lưu trữ lâu dài cũng như để thực hiện các quy trình ETL trước khi tích hợp. Khả năng lưu trữ và phân phối chi phí thấp hơn của Hadoop dẫn đến tiết kiệm chi phí đáng kể so với các nền tảng MPP chuyên dụng, chi phí cao hơn như Teradata hoặc Oracle Exadata. Mặc dù các nền tảng kho dữ liệu MPP chuyên dụng thường sẽ cung cấp hiệu suất và khả năng đáp ứng truy vấn tốt hơn cho khối lượng công việc báo cáo và quan hệ, Hadoop có thể được sử dụng cho dữ liệu lịch sử lâu đời, giải phóng dung lượng trên nền tảng MPP của bạn và trì hoãn nâng cấp phần cứng chi phí cao.

Lưu trữ dữ liệu chưa có cấu trúc, chưa được xử lý trong Hadoop (hoặc lưu trữ dựa trên đối tượng khác) trước khi được dàn dựng hoặc tích hợp vào kho dữ liệu hoặc hiển thị trong siêu thị dữ liệu cũng được coi là triển khai hồ dữ liệu.

Xử lý sự kiện

Quá trình xử lý sự kiện thường liên quan đến việc nhập và xử lý các nguồn dữ liệu phát trực tuyến, chẳng hạn như dữ liệu cảm biến, dữ liệu tin nhắn hoặc dữ liệu nhật ký. Xử lý sự kiện thường được liên kết với khái niệm IoT (Internet of Things), bao gồm việc thu thập và xử lý dữ liệu từ hàng nghìn điểm cuối, bao gồm cảm biến nhiệt độ, máy quét RFID, NFC, camera quan sát, hệ thống báo hiệu, v.v. Hadoop cung cấp dung lượng lưu trữ chi phí thấp để tích lũy hàng triệu gói tin (message) và một nền tảng tính toán để khai thác khối lượng message nhằm xác định các mẫu hoặc đặc thù.

Xử lý sự kiện bằng Hadoop thường liên quan đến một hoặc nhiều nền tảng hoặc tiện ích hệ sinh thái Hadoop chuyên biệt bao gồm Storm, Flume, Spark Streaming, Kafka hoặc những thứ khác, tất cả sẽ được thảo luận sau trong loạt bài này.

Phân tích nâng cao

Phân tích nâng cao (còn được gọi là khoa học dữ liệu) là quá trình xác định các mẫu trong dữ liệu và xây dựng các mô hình toán học để biểu thị các mẫu này, có thể được sử dụng để dự đoán kết quả tiếp theo từ dữ liệu. Phân tích nâng cao mở rộng ra ngoài các quy trình kinh doanh thông minh truyền thống, phần lớn được sử dụng cho phân tích mô tả (mô tả hoặc phân tích những gì đã xảy ra), để dự đoán hoặc ngăn chặn trước những gì có thể xảy ra hoặc có khả năng xảy ra. Một số ứng dụng cụ thể bao gồm dự đoán tỷ lệ rời bỏ hoặc tiêu hao của khách hàng, lập mô hình xu hướng (khả năng khách hàng tiềm năng có thể nhận lời đề nghị như thế nào), phát hiện gian lận, nhận dạng hình ảnh hoặc khuôn mặt, v.v.

Phân tích nâng cao bao gồm các nguyên tắc cụ thể về khai thác dữ liệu, lập mô hình dự đoán và học máy, thường là các phương pháp giải quyết vấn đề dựa trên tìm kiếm, lặp đi lặp lại, thử và sai. Hadoop cho phép các phương pháp đệ quy này ở quy mô lớn.

Những cách sử dụng này có thể (và thường được) kết hợp với nhau—trên thực tế, việc triển khai Hadoop thường phục vụ cả ba mục đích.

Tổng kết

Hadoop là nền tảng Dữ liệu lớn phong phú nhất cho đến nay và hiện là một phần được chấp nhận trong nhiều môi trường doanh nghiệp, cả trong môi trường nội bộ và trên cloud.

Hadoop được xây dựng dựa trên khái niệm về vị trí dữ liệu, theo đó các yêu cầu được gửi đến nơi dữ liệu được xử lý lưu trữ. Đây là khái niệm đưa tính toán vào dữ liệu.

Hai khái niệm khác không thể thiếu đối với Hadoop là không chia sẻ gì và schema-on-read. Không chia sẻ gì đề cập đến các tác vụ chạy độc lập để các nút không cần chia sẻ trạng thái hoặc đồng bộ hóa với các nút khác trong các giai đoạn xử lý chính. Schema on-read đề cập đến thuộc tính chấp nhận dữ liệu ở bất kỳ định dạng nào, chỉ được mô tả khi nó được xử lý, làm cho Hadoop trở thành một nền tảng không lược đồ có khả năng lưu trữ và xử lý dữ liệu đa cấu trúc thực sự.

Hadoop bao gồm các công nghệ cốt lõi là HDFS, MapReduce và YARN. HDFS là hệ thống con lưu trữ và YARN là hệ thống con lập lịch xử lý. Các dự án hoặc tiện ích khác tích hợp hoặc tương tác cụ thể với Hadoop được coi là các thành phần của hệ sinh thái Hadoop. Chúng bao gồm các dự án như Hive và Spark.

Hadoop là một nền tảng có thể mở rộng, có thể lập trình, có nhiều cách sử dụng khác nhau. Tuy nhiên, các cách sử dụng phổ biến nhất thuộc một hoặc nhiều danh mục sau: giảm tải kho dữ liệu, xử lý sự kiện, phân tích nâng cao.


Bài viết thuộc các danh mục

Bài viết được gắn thẻ



BÌNH LUẬN (0)

Hãy là người đầu tiên để lại bình luận cho bài viết !!

Hãy đăng nhập để tham gia bình luận. Nếu bạn chưa có tài khoản hãy đăng ký để tham gia bình luận với mình