Thứ ba, 10/07/2018 | 00:00 GMT+7

Cách cài đặt Hadoop ở chế độ độc lập trên Ubuntu 18.04

Hadoop là một khung lập trình dựa trên Java, hỗ trợ xử lý và lưu trữ các bộ dữ liệu cực lớn trên một cụm máy rẻ tiền. Đây là dự án nguồn mở lớn đầu tiên trong playground dữ liệu lớn và được tài trợ bởi Apache Software Foundation.

Hadoop bao gồm bốn lớp chính:

  • Hadoop Common là tập hợp các tiện ích và thư viện hỗ trợ các module Hadoop khác.
  • HDFS , viết tắt của Hadoop Distributed File System, chịu trách nhiệm lưu trữ dữ liệu vào đĩa.
  • YARN , viết tắt của Yet Another Resource Negotiator, là “hệ điều hành” cho HDFS.
  • MapReduce là mô hình xử lý ban đầu cho các cụm Hadoop. Nó phân phối công việc trong cụm hoặc bản đồ, sau đó tổ chức và giảm kết quả từ các node thành phản hồi cho một truy vấn. Nhiều mô hình xử lý khác có sẵn cho version 3.x của Hadoop.

Các cụm Hadoop tương đối phức tạp để cài đặt , vì vậy dự án bao gồm một chế độ độc lập phù hợp để tìm hiểu về Hadoop, thực hiện các thao tác đơn giản và gỡ lỗi.

Trong hướng dẫn này, ta sẽ cài đặt Hadoop ở chế độ độc lập và chạy một trong các chương trình MapReduce ví dụ mà nó bao gồm để xác minh cài đặt.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Khi bạn đã hoàn thành yêu cầu này, bạn đã sẵn sàng cài đặt Hadoop và các phụ thuộc của nó.

Trước khi bắt đầu, bạn cũng có thể cần xem Giới thiệu về các khái niệm và thuật ngữ dữ liệu lớn hoặc Giới thiệu về Hadoop

Bước 1 - Cài đặt Java

Để bắt đầu, ta sẽ cập nhật danh sách gói của bạn :

  • sudo apt update

Tiếp theo, ta sẽ cài đặt OpenJDK, Bộ phát triển Java mặc định trên Ubuntu 18.04:

  • sudo apt install default-jdk

Sau khi cài đặt xong, hãy kiểm tra version .

  • java -version
Output
openjdk 10.0.1 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)

Đầu ra này xác minh OpenJDK đã được cài đặt thành công.

Bước 2 - Cài đặt Hadoop

Với Java tại chỗ, ta sẽ truy cập trang Bản phát hành Apache Hadoop để tìm bản phát hành ổn định mới nhất .

Điều hướng đến nhị phân cho bản phát hành bạn muốn cài đặt. Trong hướng dẫn này, ta sẽ cài đặt Hadoop 3.0.3.

Ảnh chụp màn hình trang phát hành Hadoop đánh dấu liên kết đến file  binary  ổn định mới nhất

Trên trang tiếp theo, nhấp chuột phải và sao chép liên kết vào file binary phát hành.

Ảnh chụp màn hình của trang nhân bản Hadoop

Trên server , ta sẽ sử dụng wget để tìm nạp nó:

  • wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

Lưu ý: Trang web Apache sẽ tự động chuyển hướng bạn đến máy nhân bản tốt nhất, vì vậy URL của bạn có thể không trùng với URL ở trên.

Để đảm bảo file ta đã download không bị thay đổi, ta sẽ kiểm tra nhanh bằng SHA-256. Quay lại trang bản phát hành , sau đó nhấp chuột phải và sao chép liên kết đến file tổng kiểm tra cho bản binary bản phát hành mà bạn đã download :

Ảnh chụp màn hình đánh dấu file  .mds

, ta sẽ sử dụng wget trên server của bạn để download file :

  • wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds

Sau đó chạy xác minh:

  • shasum -a 256 hadoop-3.0.3.tar.gz
Output
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz

So sánh giá trị này với giá trị SHA-256 trong file .mds :

  • cat hadoop-3.0.3.tar.gz.mds
~ / hadoop-3.0.3.tar.gz.mds
... /build/source/target/artifacts/hadoop-3.0.3.tar.gz: SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A ... 

Bạn có thể an toàn bỏ qua sự khác biệt trong trường hợp và khoảng trống. Đầu ra của lệnh mà ta đã chạy đối với file ta đã download từ máy nhân bản phải trùng với giá trị trong file ta đã download từ apache.org.

Bây giờ ta đã xác minh file không bị hỏng hoặc thay đổi, ta sẽ sử dụng lệnh tar với cờ -x để extract , -z để extract , -v cho kết quả dài dòng và -f để chỉ định rằng ta ' đang extract từ một file . Sử dụng hoàn thành tab hoặc thay thế số version chính xác trong lệnh bên dưới:

  • tar -xzvf hadoop-3.0.3.tar.gz

Cuối cùng, ta sẽ di chuyển các file đã extract vào /usr/local , nơi thích hợp cho phần mềm được cài đặt local . Thay đổi số version , nếu cần, để trùng với version bạn đã download .

  • sudo mv hadoop-3.0.3 /usr/local/hadoop

Với phần mềm tại chỗ, ta đã sẵn sàng để cấu hình môi trường của nó.

Bước 3 - Cấu hình Trang chủ Java của Hadoop

Hadoop yêu cầu bạn đặt đường dẫn đến Java, dưới dạng một biến môi trường hoặc trong file cấu hình Hadoop.

Đường dẫn đến Java, /usr/bin/java là một softlink đến /etc/alternatives/java , đến lượt nó, đây là một softlink đến binary Java mặc định. Ta sẽ sử dụng readlink với -f cờ để làm theo tất cả các softlink trong mỗi phần của con đường, một cách đệ quy. Sau đó, ta sẽ sử dụng sed để cắt bin/java khỏi kết quả để cung cấp cho ta giá trị chính xác cho JAVA_HOME .

Để tìm đường dẫn Java mặc định

  • readlink -f /usr/bin/java | sed "s:bin/java::"
Output
/usr/lib/jvm/java-11-openjdk-amd64/

Bạn có thể sao chép kết quả này để đặt trang chủ Java của Hadoop thành version cụ thể này, điều này đảm bảo nếu Java mặc định thay đổi, giá trị này sẽ không. Ngoài ra, bạn có thể sử dụng động lệnh readlink trong file để Hadoop sẽ tự động sử dụng bất kỳ version Java nào được đặt làm mặc định của hệ thống.

Để bắt đầu, hãy mở hadoop-env.sh :

  • sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

Sau đó, chọn một trong các tùy chọn sau:

Tùy chọn 1: Đặt giá trị tĩnh

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . . #export JAVA_HOME=${JAVA_HOME} export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/  . . .  
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . . #export JAVA_HOME=${JAVA_HOME} export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")  . . .  

Lưu ý: Đối với Hadoop, giá trị của JAVA_HOME trong hadoop-env.sh sẽ overrides bất kỳ giá trị nào được đặt trong môi trường bởi /etc/profile hoặc trong profile của user .

Bước 4 - Chạy Hadoop

Bây giờ ta có thể chạy Hadoop:

  • /usr/local/hadoop/bin/hadoop
Output
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS] where CLASSNAME is a user-provided Java class OPTIONS is none or any of: --config dir Hadoop config directory --debug turn on shell script debug mode --help usage information buildpaths attempt to add class files from build tree hostnames list[,of,host,names] hosts to use in slave mode hosts filename list of hosts to use in slave mode loglevel level set the log4j level for this command workers turn on worker mode SUBCOMMAND is one of: . . .

Trợ giúp nghĩa là ta đã cấu hình thành công Hadoop để chạy ở chế độ độc lập. Ta sẽ đảm bảo nó hoạt động bình thường bằng cách chạy chương trình MapReduce mẫu mà nó vận hành. Để làm như vậy, hãy tạo một folder được gọi là input trong folder chính của ta và sao chép các file cấu hình của Hadoop vào đó để sử dụng các file đó làm dữ liệu của ta .

  • mkdir ~/input
  • cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

Tiếp theo, ta có thể sử dụng lệnh sau để chạy chương trình MapReduce hadoop-mapreduce-examples , một repository Java với một số tùy chọn. Ta sẽ gọi chương trình grep của nó, một trong nhiều ví dụ có trong hadoop-mapreduce-examples , tiếp theo là folder input , input và folder kết quả grep_example . Chương trình Grep MapReduce sẽ đếm các kết quả phù hợp của một từ theo nghĩa đen hoặc biểu thức chính quy. Cuối cùng, ta sẽ cung cấp biểu thức chính quy allowed[.]* Để tìm các lần xuất hiện của từ allowed trong hoặc ở cuối câu khai báo. Biểu thức có phân biệt chữ hoa chữ thường, vì vậy ta sẽ không tìm thấy từ nếu nó được viết hoa ở đầu câu:

  • /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ~/input ~/grep_example 'allowed[.]*'

Khi nhiệm vụ hoàn thành, nó cung cấp một bản tóm tắt về những gì đã được xử lý và các lỗi mà nó đã gặp phải, nhưng điều này không chứa kết quả thực tế.

Output
. . . File System Counters FILE: Number of bytes read=1330690 FILE: Number of bytes written=3128841 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 Map-Reduce Framework Map input records=2 Map output records=2 Map output bytes=33 Map output materialized bytes=43 Input split bytes=115 Combine input records=0 Combine output records=0 Reduce input groups=2 Reduce shuffle bytes=43 Reduce input records=2 Reduce output records=2 Spilled Records=4 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=3 Total committed heap usage (bytes)=478150656 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=147 File Output Format Counters Bytes Written=34

Lưu ý: Nếu folder kết quả đã tồn tại, chương trình sẽ không thành công và thay vì xem tóm tắt, kết quả sẽ giống như sau:

Output
. . . at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.hadoop.util.RunJar.run(RunJar.java:244) at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

Kết quả được lưu trữ trong folder kết quả và có thể được kiểm tra bằng cách chạy cat trên folder kết quả :

  • cat ~/grep_example/*
Output
19 allowed. 1 allowed

Nhiệm vụ MapReduce đã tìm thấy 19 lần xuất hiện của từ allowed theo sau là dấu chấm và một lần xuất hiện khi không được phép. Việc chạy chương trình ví dụ đã xác minh cài đặt độc lập của ta đang hoạt động bình thường và user không có quyền trên hệ thống có thể chạy Hadoop để thăm dò hoặc gỡ lỗi.

Kết luận

Trong hướng dẫn này, ta đã cài đặt Hadoop ở chế độ độc lập và xác minh nó bằng cách chạy một chương trình ví dụ mà nó cung cấp. Để tìm hiểu cách viết các chương trình MapReduce của bạn , bạn có thể cần xem hướng dẫn MapReduce của Apache Hadoop, hướng dẫn này đi qua đoạn mã đằng sau ví dụ. Khi đã sẵn sàng cài đặt một cụm, hãy xem hướng dẫn Cài đặt Cụm Hadoop của Apache Foundation.


Tags:

Các tin liên quan

Cách thiết lập đồng bộ hóa thời gian trên Ubuntu 18.04
2018-07-10
Cách cài đặt và cấu hình GitLab trên Ubuntu 18.04
2018-07-09
Cách cài đặt Git trên Ubuntu 18.04
2018-07-06
Cách cài đặt và cấu hình Postfix trên Ubuntu 18.04
2018-07-06
Cách thiết lập vsftpd cho Thư mục người dùng trên Ubuntu 18.04
2018-07-06
Cách cài đặt WordPress với LAMP trên Ubuntu 18.04
2018-07-06
Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 18.04
2018-07-05
Cách thêm không gian swap trên Ubuntu 18.04
2018-07-05
Cách thiết lập NFS Mount trên Ubuntu 18.04
2018-07-05
Cách cài đặt và cấu hình Nextcloud trên Ubuntu 18.04
2018-07-05