Showing posts with label bigdata. Show all posts
Showing posts with label bigdata. Show all posts

1/24/2022

Tổng hợp các câu hỏi về Apache Spark | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Xem phần trước: Tổng hợp các câu hỏi về Apache Hadoop | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Số thứ tự Câu hỏi Đáp án Câu Trả Lời
1 Spark được phát triển bằng ngôn ngữ nào A. Java
B. Scala
C. Python
D. R
B
2 Trong Spark Streaming dữ liệu có thể lấy từ những nguồn nào? A. Kafka
B. Flume
C. Kinesis
D. Tất cả
D
3 Apache Spark có API cho các ngôn ngữ: A. Java
B. Scala
C. Python
D. Tất cả
D
4 Đâu không phải là một thành phần trong hệ sinh thái Spark? A. Sqoop
B. GraphX
C. MLlib
D. BlinkDB
A
5 Cấu trúc dữ liệu cơ bản của Spark Streaming là gì? A. DStream
B. RDD
C. Shared Variable
D. Không có trong số đáp án trên
A
6 Thuật toán nào sau đây không có trong Spark MLlib A. Streaming Linear Regression
B. Streaming KMeans
C. Tanimoto distance
D. Không có trong các phương án trên
C
7 DStream là gì? A. Chuỗi các RDD liên tục
B. Chuỗi Dataframe liên tục
C. Chuỗi Dataset liên tục
D. Không có trong các phương án trên
A
8 Đâu không phải là một đặc điểm của Spark A. Hỗ trợ xử lý tính toán trên RAM
B. Tính chịu lỗi
C. Tiết kiệm chi phí
D. Tương thích với hệ thống lưu trữ tệp khác
C
9 Đâu không phải là một ouput operation của DStream A. SaveAsTextFiles
B. ForeachRDD
C. SaveAsHadoopFiles
D. ReduceByKeyAndWindow
D
10 Apache Spark có khả năng xử lý hàng loạt khi chạy trên RAM nhanh hơn bao nhiêu lần so với MapReduce A. 10
B. 20
C. 100
D. 200
C
11 Đâu là lý do khiến Spark nhanh hơn MapReduce A. Công cụ thực thi DAG và tính toán trên RAM
B. Hỗ trợ cho việc sử dụng nhiều ngôn ngữ khác nhau như Scala; Java; Python; R
C. RDD là bất biến và có khả năng chịu lỗi cao
D. Không có trong các phương án trên
A
12 Điều nào sau đây là đúng khi nói về RDD A. RDD là một mô hình lập trình
B. RDD là một tập hợp đối tượng bất biến
C. Là database
D. Không có trong các phương án trên
B
13 Khả năng chịu lỗi của RDD thể hiện qua đâu? A. Tính bất biến của RDD
B. DAG (Directed Acyclic Graph)
C. Lazy-evaluation
D. Không có trong các phương án trên
14 Đầu vào dữ liệu cho chương trình Spark có thể là: A. Local files
B. HDFS; NFS
C. Amazon S3; Elasticsearch
D. Cả 3 phương án trên
D
15 Đâu là lệnh lưu dữ liệu ra ngoài chương trình Spark? A. input.saveAsTextFile('file:///usr/zeppelin/notebook/dataset/new.txt')
B. input.saveAsTextFile('/usr/zeppelin/notebook/dataset/new.txt')
C. input.saveAs('file:///usr/zeppelin/notebook/dataset/new.txt')
D. input.saveAsTextFile:'file:///usr/zeppelin/notebook/dataset/new.txt'
A
16 Đâu là cách submit đúng một job lên Spark cluster hoặc chế độ local A. ./spark-submit wordcount.py README.md
B. ./spark-submit README.md wordcount.py
C. spark-submit wordcount.py README.md
D. Phương án A và C
A
17 Câu lệnh MapReduce trong Spark dưới đây chia mỗi dòng thành từ dựa vào delimiter nào: input.flatMap(lambda x: x.split('\t')).map(lambda x: (x;1)).reduceByKey(add) A. Tab
B. Dấu cách
C. Dấu hai chấm
D. Dấu phẩy
A

Tham khảo: https://data-flair.training/

12/17/2021

Hướng dẫn lab 5 | Môn lưu trữ và xử lý dữ liệu lớn


Các bạn học môn lưu trữ và xử lý dữ liệu lớn của thầy Đào Thành Chung sẽ phải làm 5 bài lab, trong bài viết này mình sẽ hướng dẫn mọi người chạy bài lab số 5 (lab về Spark Streaming), xem yêu cầu của bài lab TẠI ĐÂY

Chú ý

- Trong hướng dẫn của thầy, có một số hướng dẫn đã quá cũ và không thể chạy được nếu bạn làm theo y nguyên trong hướng dẫn của thầy. Mình đã sửa lại 2 project trong lab cho phù hợp, các bạn chỉ cần clone về và làm theo hướng dẫn của mình dưới đây.

- Project của thầy và project mình sửa lại đều chạy với Spark Single node, nên nếu bạn cài với cụm Multi node thì hãy sửa đổi các địa chỉ hostname từ localhost thành địa chỉ máy master, chỗ nào cần sửa mình đã lưu ý bôi đậm, các bạn chú để sửa lại cho đúng.

Bài 1: Socket Stream

Clone toàn bộ project sau về máy để chuẩn bị chạy nha: https://github.com/demanejar/socket-stream.

Trong project có 2 file chính, một là file SocketStream.scala:

object SocketStream {
    def main(args : Array[String]){
        val conf = new SparkConf().setAppName("Socket-Stream")
        val ssc = new StreamingContext(conf, Seconds(1))
        val lines = ssc.socketTextStream("localhost", 7777)
        val errorLines = lines.filter(_.contains("error"))
        errorLines.print()
        ssc.start()
        ssc.awaitTermination()
    }
}

  • Để có thể submit job này với spark-submit thì bạn phải build chúng thành một file .jar, với scala thì chúng ta sẽ sử dụng sbt

  • Lưu ý: nếu bạn chạy cụm Spark nhiều máy, thì hãy đổi địa chỉ hostname từ localhost thành địa chỉ máy master nha

Khởi động Spark và kiểm tra địa chỉ của master thông qua cổng 8080 (spark://PC0628:7077):

Build project vừa rồi thành file .jar với câu lệnh:

sbt clean package

Chạy spark-submit với file jar vừa bulid được:

spark-submit --master spark://PC0628:7077 --class SocketStream target/scala-2.11/socket-stream_2.11-0.0.1.jar

  • Tham số master là địa chỉ của master mà bạn vừa lấy ở bên trên

  • Tham số class là đường dẫn tới hàm main của project

Mở một terminal khác lên và chạy lệnh sau để bắt đầu gửi text qua cổng 7777:

nc -l 7777

Kết quả in ra màn hình và sẽ vụt qua rất nhanh:



Bài 2: Log Analyzer

Clone toàn bộ project về máy để chuẩn bị chạy nha: https://github.com/demanejar/logs-analyzer.

Mình sẽ đi qua giải thích từng file để mọi người hiểu hơn về project, đầu tiên là file đầu vào log.txt, file này chứa 1546 dòng log, các log đều có cấu trúc giống nhau, công việc của project này chính là nhận đầu vào từ file log này và đưa ra các phân tích, thống kê về trên tập log này.

File stream.sh là một file shell script với nhiệm vụ là đọc dữ liệu từ file log.txt và đẩy chúng qua cổng 9999.

File build.sbt thì giống với project trước, file này để khai báo các thư viện, phụ thuộc để có thể build project thành một file .jar

Cuối cùng là project của chúng ta viết bằng scala với 2 file ApacheAccessLog.scalaLogAnalyzerStreaming.scala. File LogAnalyzerStreaming.scala sẽ lắng nghe ở cổng 9999, lấy dữ liệu và tiến hành tổng hợp, phân tích chúng.

  • Lưu ý: nếu bạn chạy cụm Spark nhiều máy, thì hãy đổi địa chỉ hostname  trong file LogAnalyzerStreaming.scala từ localhost thành địa chỉ máy master nha

Khởi động Spark và kiểm tra địa chỉ của master thông qua cổng 8080 (spark://PC0628:7077):

Build project vừa rồi thành file .jar với câu lệnh dưới đây, lần đầu build có thể các bạn sẽ phải đợi khá lâu vì nó phải tải xuống các thư viện, trong các lần build sau sẽ nhanh hơn:

sbt clean package

Chạy spark-submit với file jar vừa bulid được:

spark-submit --master spark://PC0628:7077 --class LogAnalyzerStreaming target/scala-2.12/log-analyzer_2.12-0.0.1.jar

  • Tham số master là địa chỉ của master mà bạn vừa lấy ở bên trên

  • Tham số class là đường dẫn tới hàm main của project

Trong bài viết trước, chúng ta đã gửi dữ liệu thông qua socket bằng tay, trong bài này vẫn là socket tuy nhiên chúng ta sẽ viết một chương trình để chúng tự động gửi dữ liệu và chúng ta chỉ việc ngồi chờ kết quả thôi.

Như mình giải thích ở ban đầu, file stream.sh là một file shell script với nhiệm vụ là đọc dữ liệu từ file log.txt và đẩy chúng qua cổng 9999. Sử dụng câu lệnh sau để bắt đầu chạy:

./stream.sh log.txt

  • Với log.txt viết ở phía sau thể hiện log.txt là một tham số đầu vào của chương trình viết trong file .stream.sh

  • Lưu ý: nếu bạn chạy cụm Spark nhiêu máy thì file này phải được chạy trên máy master 

Kết quả in ra màn hình cũng sẽ vụt qua rất nhanh, các bạn có thể kéo terminal lên để nhìn

Mở cổng 4040 để xem lại chi tiết các job vừa thực hiện (localhost:4040):


Tham khảo: https://demanejar.github.io/

11/01/2021

Tổng hợp các câu hỏi về Apache Hadoop | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Câu 1: Mục tiêu chính của Apache Hadoop 

Lưu trữ dữ liệu khả mở và xử lý dữ liệu mạnh mẽ. Tiết kiệm chi phí khi lưu trữ và xử lý lượng dữ liệu lớn.

Bạn có thể xem thêm chi tiết mục tiêu của Hadoop [TẠI ĐÂY]

Câu 2: Hadoop giải quyết bài toán chịu lỗi thông qua kỹ thuật gì

- Hadoop chịu lỗi thông qua kỹ thuật dư thừa

- Các tệp tin được phân mảnh, các mảnh được nhân bản ra các node khác trên cụm

- Các công việc cần tính toán được phân mảng thành các tác vụ độc lập 


Câu 3: Mô tả cách thức 1 client được dữ liệu trên HDFS

Client truy vấn namenode để biết được vị trí các chunks. Namenode trả về vị trí các chunks. Client kết nối song song với các datanode để đọc các chunk.

Bạn có thể xem chi tiêt quá trình đọc dữ liệu này [TẠI ĐÂY]


Câu 4: Mô tả cách thức 1 client ghi dữ liệu trên HDFS

Client kết nối tới namenode để chỉ định khối lượng dữ liệu cần ghi. Namnode chỉ định vị trí các chunk cho client. Client khi chunk tới datanode đầu tiền, sau đó các datanode tự động thực thi nhân bản. Quá trình kết thúc khi tất cả các chunk và nhân bản đã được thực thi thành công. 

Bạn có thể xem chi tiêt quá trình ghi dữ liệu này [TẠI ĐÂY]


Câu 5: Các thành phần chính trong Hadoop Ecosystem

Hadoop Ecosytem là một nền tảng cung cấp các giải pháp để lưu trữ và xử lý lượng lớn dữ liệu. 

Các thành phần chính trong Hadoop Ecosytem là: 

- HDFS 

- Mapreduce framework 

- YARN

- Zookeeper


Câu 6: Cơ chế chịu lỗi của datanode trong HDFS

Sử dụng cơ chế heartbeat, định kì datanode sẽ gửi thông báo về trạng thái cho namenode. Khoảng thời gian mặc định mà datanode gửi heartbeat về cho namenode là 3s, sau 3s mà datanode không có gửi thông tin về cho namenode thì mặc định namenode coi là node đó đã chết và nhiệm vụ chưa hoàn thành của node đó sẽ được trao lại cho node mới.

Để cấu hình lại thời gian heartbeat thì bạn có thể thêm đoạn XML sau vào trong file hdfs-site.xml như sau: 

<property>

<name>dfs.heartbeat.interval</name>

<value>3</value>

</property>



<property>

<name>dfs.namenode.heartbeat.recheck-interval</name>

<value>300000</value>

</property>

Bạn có thể xem các cấu hình mặc định của hdfs-site.xml [TẠI ĐÂY]


Câu 7: Cơ chế tổ chức dữ liệu của datanode trong HDFS

Files trong HDFS được chia thành các khối có kích thước cố định được ( block-sized chunks) gọi là data block. Các block được lưu trữ như các đơn vị độc lập (kích thước của 1 block mặc định là 128MB). 

 Các chunk là các tập tin hệ thống trong tập tin cục bộ của máy chủ datanode


 Xem thêm[Vấn đề gì xảy ra nếu lưu trữ các file nhỏ trên HDFS?]

 

Câu 8: Cơ chế nhân bản dữ liệu trong HDFS

Các block của file được nhân bản để tăng khả năng chịu lỗi. Namenode là node đưa ra tất cả các quyết định đến việc nhân rộng các khối. 


Câu 9: HDFS giải quyêt bài toán single-point-of-failure cho namenode bằng cách nào 

Sử dụng Secondary Namenode theo cơ chế active-passive. Secondary Namenode chỉ hoạt động khi có vấn đề với Namenode

Các bạn có thể xem chi tiết về Secondary Namenode [TẠI ĐÂY]


Câu 10: 3 chế độ mà Hadoop có thể chạy? 

- Standalone mode: đây là chế độ mặc định, Hadoop sử dụng local FileSystem và 1 tiến trình Java duy nhất để chạy các dịch vụ Hadoop.

- Pseudo-distributed mode: triển khai Hadoop trên 1 node để thực thi tất cả các dịch vụ.

- Fully-distributed mode: triển khai Hadoop trên 1 cụm máy với namenode và datanode.


Câu 11: Giải thích Bigdata và tiêu chí 5V của Bigdata

Bigdata là thuật ngữ chỉ tập dữ liệu lớn và phức tạp và rất khó để xử lý bằng các công cụ dữ liệu quan hệ, các ứng dụng xử lý dữ liệu truyền thống. 

5V trong Bigdata là: 

- Volume: Volume thể hiện lượng dữ liệu đang tăng với tốc độ cấp số nhân, tức là bằng Petabyte và Exabyte.

- Velocity: Velocity đề cập đến tốc độ dữ liệu đang phát triển, rất nhanh. Hôm nay, dữ liệu của ngày hôm qua được coi là dữ liệu cũ. Ngày nay, mạng xã hội là một yếu tố đóng góp lớn vào tốc độ phát triển của dữ liệu.

- Variety: Variety đề cập đến sự không đồng nhất của các kiểu dữ liệu. Nói cách khác, dữ liệu được thu thập có nhiều định dạng như video, âm thanh, csv, v.v. Vì vậy, các định dạng khác nhau này đại diện cho nhiều loại dữ liệu.

- Veracity: Veracity đề cập đến dữ liệu bị nghi ngờ hoặc không chắc chắn của dữ liệu có sẵn do dữ liệu không nhất quán và không đầy đủ. Dữ liệu có sẵn đôi khi có thể lộn xộn và khó tin cậy. Với nhiều dạng dữ liệu lớn, chất lượng và độ chính xác rất khó kiểm soát. Khối lượng thường là lý do đằng sau sự thiếu chất lượng và độ chính xác của dữ liệu.

- Value: Tất cả đều tốt và tốt khi có quyền truy cập vào dữ liệu lớn nhưng trừ khi chúng ta có thể biến nó thành một giá trị.

Tham khảo các câu hỏi về Hadoop tại: https://data-flair.training/

Bài viết được tham khảo tại: https://demanejar.github.io/


9/10/2021

Học sâu và ứng dụng | Tài liệu, chuyên ngành


Môn này là một môn nằm trong mô-đun "Phân tích dữ liệu thông minh" của bên khoa học máy tính tức là nó đã là một môn chuyên ngành rồi, không còn là môn cơ sở ngành nữa, môn này cũng là môn chuyên ngành đầu tiên mà mình viết và chia sẻ trên website.

Deep Learning thì là một trend hot trong những năm gần đây rồi, khi mà nhà nhà học Deep, người người học Deep và môn này mang lại cho bạn những gì cơ bản nhưng cũng không hề thiếu những phần nâng cao nha vì nó là một môn chuyên ngành rồi. Các bạn sẽ được học về: 

  • Tổng quan về mạng nơ ron
  • Mạng CNN 
  • Cách huấn luyện mạng nơ ron 
  • Bài toán Object detection 
  • RNN
  • NLP
  • Ngoài ra các bạn còn được giới thiệu các phần cứng cho học máy, các công cụ phần mềm hay sử dụng trong học máy


Tuy nhiên thì thực sự mình thấy là mỗi bài tuy đề cập tới những phần nâng cao nhưng lại nói 1 cách khá tổng quát và không được chi tiết, tất nhiên rồi cũng vì thời gian của các tiết học là có hạn và các bạn muốn hiển sâu hơn bắt buộc phải tự học rất nhiều nha, môn này cũng rất nhanh mất gốc nếu 1-2 tuần mà không động vào là tối cổ luôn rồi.

Có một câu hỏi về môn này là không biết gì thì có thể học được không? tất nhiên là nếu bạn đăng kí được môn tức là bạn đã đủ điều kiện để học môn này khi đã học hết các môn điều kiện, tuy nhiên lời khuyên thực sự chân thành của mình là hãy đăng kí môn này khi đã có cho mình một ít kiến thức về hoc sâu rồi, thế nào là có kiến thức? cái này thực sự là khó định nghĩa, tùy vào bạn tin tưởng vào năng lực của bạn thân thế nào thôi, mình có thể lôi ra 1 số tiêu chí để bạn có thể xem nha: 

  • Bạn phải hiểu được luồng đi của Deep Learning, chúng ta cần làm gì, phải làm gì trong từng bước

  • Có thể tự code 1 lại 1 mạng cơ bản, bạn có thể tham khảo TẠI ĐÂY nha

  • Biết qua về 1 số framework cơ bản, qua thôi nha có thể là mxnet, tensorfow hoặc pytorch

Về tiêu chí thứ 3 mình đưa ra ý là vì bài tập lớn chắc chắn các bạn phải dùng tới các framework này nhưng trong quá trình học các bạn không được dạy đâu, mà chỉ được các thầy cô giáo nhắc tới và sẽ được nhắc là về tự tìm hiểu mà lúc đấy mới tự tìm hiểu xong làm bài tập lớn thì thực sự là khó trừ khi có ai đó trong team gánh.

Ngoài ra, trong kì học bạn phải thực sự dành ra thời gian cho môn học, 1 ít thôi không cần nhiều đâu, chỉ là không bỏ bê là được. 


TOÀN BỘ TÀI LIỆU ĐỂ HỌC MÔN NÀY BẠN CÓ THỂ TẢI VỀ TẠI ĐÂY NHA

(sẽ bao gồm slide môn học, đề thi, các tài liệu, bài báo về học sâu, các ví dụ và 1 số bài lab để mọi người tham khảo)


BÀI TẬP LỚN

Môn này bạn sẽ phải làm một project về Deep Learning theo nhóm, ngoài ra bạn có thể chọn việc là review lại 1 paper nào đó ( cái này tùy thầy/ cô dạy nha). Các đề tài mà hay được chọn có thể như là: nhận diện biển số xe, thêm chú thích cho ảnh, dịch máy, ... Nếu như các bạn nghĩ đề tài mình đơn giản quá sợ không được điểm cao hay là quá phức tạp sợ không làm được có thể nhờ các thầy/ cô review qua về đề tài nha, các thầy/ cô luôn luôn sẵn lòng để trả lời các câu hỏi của các bạn đó.

3/29/2021

Cài đặt và triển khai Hadoop Single Node | Share


Mỗi ngành công nghiệp lớn đang triển khai Apache Hadoop là khung tiêu chuẩn để xử lý và lưu trữ dữ liệu lớn. Hadoop được thiết kế để được triển khai trên một mạng lưới hàng trăm hoặc thậm chí hàng ngàn máy chủ chuyên dụng. Tất cả các máy này làm việc cùng nhau để đối phó với khối lượng lớn và nhiều bộ dữ liệu khổng lồ.

Xem thêmCài đặt và triển khai Spark standalone



Hadoop mạnh mẽ và hữu dụng chỉ khi được cài đặt và khai thác nó trên nhiều node, tuy nhiên với người bắt đầu thì Hadoop Single node là sự khởi đầu tuyệt vời để làm quen với hadoop. Bài viết này mình sẽ hướng dẫn các bạn triển khai Hadoop trên 1 node ( Hadoop Single node).

Điều kiện trước khi cài : 

  • Máy bạn phải có Openjdk ( bản 8, 11 hay 15 đều được), nếu chưa có thì bạn có thể cài theo câu lệnh sau : 
sudo apt-get install openjdk-11-jdk -y
  • Máy có SSH client và SSH server, nếu chưa có thì bạn có thể cài theo câu lệnh sau : 
sudo apt-get install openssh-server openssh-client -y

Thiết lập User cho Hadoop

Thường mình thấy một nhiều trang hướng dẫn các bạn tạo một user mới trên Ubuntu và cài Hadoop trên đó nhưng qua trải nhiệm của mình thì cài Single Node chúng ta có thể cài trên bất cứ tài khoản nào, bạn có thể cài đặt ngay trên tài khoản admin mà bạn đang dùng hiện tại.

Tạo cặp khóa SSH và xác định vị trí sẽ được lưu trữ : 

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

Hệ thống sẽ tiến hành tạo và lưu cặp khóa SSH : 

Sử dụng lệnh cat để lưu public key vào authorized_keys trong thư mục của SSH:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Phân quyền cho người dùng với lệnh chmod :

chmod 0600 ~/.ssh/authorized_keys

Xác minh mọi thứ được thiết lập chính xác bằng cách ssh đến localhost: 

ssh localhost

Download và Cài đặt Hadoop trên Ubuntu

Tải về một phiên bản Hadoop trên trang phân phối chính thức của Hadoop tại : https://hadoop.apache.org/releases.html

Ấn vào phần binary trong Binary download

Bây giờ để file nén mà bạn vừa tải về vào bất kì chỗ nào và giải nén nó ra bằng lệnh : 

tar xvzf hadoop-3.2.2.tar.gz 

Cấu hình và triển khai Hadoop Single Node (Pseudo-Distributed Mode)

Để cấu hình Hadoop cho chế độ phân phối giả chúng ta sẽ chỉnh sửa các tập file cấu hình của Hadoop trong đường dẫn etc/hadoop và trong file cấu hình môi trường gồm các file sau : 

  • .bashrc
  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml

Cấu hình biến môi trường Hadoop ( file .bashrc)

Mở file của .bashrc của bạn bằng trình soạn thảo nano : 

sudo nano ~/.bashrc 

Xác định biến mỗi trường Hadoop bằng cách thêm các biến sau vào cuối file ( nhớ chỉnh sửa đường dẫn $HADOOP_HOME cho đúng với đường dẫn mà bạn đã đặt hadoop)

#Hadoop Related Options

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export HADOOP_HOME=/opt/myapp/hadoop-3.2.2

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" 

Áp dụng các thay đổi trên bằng cách thực hiện lệnh sau : 

source ~/.bashrc 

 

Chỉnh sửa file hadoop-env.sh

Mở file hadoop-env.sh bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh 

Tìm tới vị trí như hình bên dưới, bỏ comment ( bỏ dấu #) phần JAVA_HOME và thêm vào đầy đủ đường dẫn Openjdk trên máy của bạn : 



Chỉnh sửa file core-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/tmpdata</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9001</value>
</property>
</configuration>

 

Chỉnh sửa file hdfs-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml 

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>dfs.data.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/dfsdata/namenode</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/dfsdata/datanode</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
</configuration>

 

Chỉnh sửa file mapred-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
</configuration>

 

Chỉnh sửa file yarn-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml  

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>127.0.0.1</value>
</property>
<property>
  <name>yarn.acl.enable</name>
  <value>0</value>
</property>
<property>
  <name>yarn.nodemanager.env-whitelist</name>   
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

 

Format HDFS namenode

Các bạn phải định dạng lại namenode trước khi bắt đầu các dịch vụ đầu tiên : 

hdfs namenode -format

 

Start Hadoop Cluster

Tại thư mục sbin, thực hiện các lệnh sau để chạy và khởi động Hadoop : 

./start-all.sh

Chạy lệnh jsp để kiểm tra các trình daemon đang chạy : 

jps

Nếu kết quả ra 6 trình daemon như sau thì bạn đã cấu hình đúng : 



Truy cập Hadoop UI từ trình duyệt 

Các bạn có thể kiểm tra Hadoop đã được cài đặt thành công hay chưa tại cổng mặc định của namenode là 9870 : 

localhost:9870



Kiểm tra datanode tại cổng mặc định 9864 : 

localhost:9864

Kiểm tra Yarn resource manager tại cổng 8088 : 

locahost:8088


Tham khảo : https://phoenixnap.com/