Thứ Ba, 26 tháng 1, 2016

Big Data #6 – Hadoop là gì?


Discussion in 'Big Data' started by phamthanhnhan14, Nov 10, 2014.
  1. phamthanhnhan14

    phamthanhnhan14 Active Member

    Hadoop là gì?

    Apache Hadoop là 1 nền tảng mềm mã nguồn mở, miễn phí, dựa trên Java, cung cấp 1 nền tảng phân tán mạnh để lưu trữ và quản lý big data. Bản quyền Apache V2 license. Nó chạy ứng dụng trên các cụm phần cứng lớn và xử lý hàng ngàn terabytes dữ liệu trên hàng ngàn nodes. Hadoop lấy cảm hứng từ Google MapReduce và Google File System (GFS). Điểm mạnh của nền tảng Hadoop là cung cấp độ tin cậy và tính sẵn sàng cao.
    bsd-hadoop.png

    Các thành phần lõi của Hadoop là gì?

    Có hai thành phần chính của nền tảng Hadoop.
    • Hadoop MapReduce là cách chia 1 vấn đề dữ liệu lớn hơn thành các đoạn nhỏ hơn và phân tán nó trên nhiều máy chủ. Mỗi máy chủ có 1 tập tài nguyên riêng và máy chủ xử lý dữ liệu trên cục bộ. Khi máy chủ xử lý xong dữ liệu, chúng sẽ gởi trở về máy chủ chính.
    • Hadoop Distributed File System (HDFS) là hệ thống tập tin ảo. Có 1 sự khác biệt lớn giữa các hệ thống tập tin khác và Hadoop. Khi chúng ta di chuyển 1 tập tin trên HDFS, nó tự động chia thành nhiều mảnh nhỏ. Các đoạn nhỏ của tập tin sẽ được nhân rộng và lưu trữ trên nhiều máy chủ khác (thường là 3) để tăng sức chịu lỗi và tính sẵn sàng cao.
    Bên cạnh 2 thành phần lõi, Hadoop cũng chứa 1 số modules:

    • Hadoop Common: các tiện tích thông dụng cho các module khác của Hadoop.
    • Hadoop Yarn: một nền tảng cho lập lịch và quản lý tài nguyên cụm (cluster).
    Kiến trúc cụm Hadoop nhiều node

    Xem tổng quan kiến trúc 1 cụm Hadoop nhiều node.
    bsd-hadoop1.png

    Một cụm Hadoop nhỏ gồm 1 master node và nhiều worker / slave node. Như đã nói, toàn bộ cụm chứa 2 lớp. Một lớp MapReduce Layer và lớp kia là HDFS Layer. Mỗi lớp có các thành phần liên quan riêng. Master node gồm JobTracker, TaskTracker, NameNode, và DataNode. Slave / worker node gồm DataNode, và TaskTracker. Cũng có thể slave / worker node chỉ là dữ liệu hoặc node để tính toán.

    Tại sao dùng Hadoop?

    Các điểm thuận lợi khi dùng Hadoop:
    • Robus and Scalable – Có thể thêm node mới và thay đổi chúng khi cần.
    • Affordable and Cost Effective – Không cần phần cứng đặc biệt để chạy Hadoop.
    • Adaptive and Flexible – Hadoop được xây dựng với tiêu chí xử lý dữ liệu có cấu trúc và không cấu trúc.
    • Highly Available and Fault Tolerant – Khi 1 node lỗi, nền tảng Hadoop tự động chuyển sang node khác.
    bsd-hadoop2.png

    Tại sao Hadoop tên là Hadoop?

    Năm 2005, Hadoop được tạo ra bởi Doug Cutting và Mike Cafarella khi làm việc tại Yahoo. Doug Cutting đặt tên Hadoop theo con voi đồ chơi của con trai mình.
     


  2. phamthanhnhan14

    phamthanhnhan14 Active Member

    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ệ.
    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.
    Theo IBM(http://www.ibm.com/developerworks/vn/library/data/2013Q1/dm-

0 nhận xét: