Big Data I. Mô hình lập trình MapReduce cho Bigdata



tải về 382.36 Kb.
Chế độ xem pdf
trang6/6
Chuyển đổi dữ liệu29.02.2024
Kích382.36 Kb.
#56658
1   2   3   4   5   6
Li thuyet Hadoop

Hoạt động
Sau đây mình sẽ trình bày nguyên lí chung của đọc ghi dữ liệu trên HDFS:
Write data
Theo trình tự trong hình ta có các bước write dữ liệu như sau:
1. Client gửi yêu cầu tạo file ở DistributedFileSystem APIs.


2. DistributedFileSystem yêu cầu tạo file ở NameNode.NameNode kiểm tra quyền của client
và kiểm tra file mới có tồn tại hay không…
3. DistributedFileSystem return FSDataOutPutStream cho client để ghi dữ liệu. 
FSDataOutputStream chứa DFSOutputStream, nó dùng để xử lý tương tác với NameNode 
và DataNode. Khi client ghi dữ liệu, DFSOutputStream chia dữ liệu thành các packet và đẩy
nó vào hàng đợi DataQueue. DataStreamer sẽ nói với NameNode để phân bổ các block vào 
các datanode để lưu trữ các bản sao.
4. Các DataNode tạo thành pipeline, số datanode bằng số bản sao của file. DataStream gửi 
packet tới DataNode đầu tiên trong pipeline, datanode này sẽ chuyển tiếp packet lần lượt tới 
các Datanode trong pipeline.
5. DFSOutputStream có Ack Queue để duy trì các packet chưa được xác nhận bởi các 
DataNode. Packet ra khỏi ackqueue khi nhận được xác nhận từ tất cả các DataNode.
6. Client gọi close() để kết thúc ghi dữ liệu, các packet còn lại được đẩy vào pipeline.
7. Sau khi toàn bộ các packet được ghi vào các DataNode, thông báo hoàn thành ghi file.
Đó là toàn bộ những gì diễn ra ở đằng sau, còn đây là ví dụ một trong những lênh thao tác ghi trên 
hdfs
hdfs dfs -put 
Trong quá trình thực tế hầu như sẽ không làm việc trực tiếp với hệ thống file system của 
hadoop(HDFS) bằng câu lệnh, mà ta thường đọc, ghi qua spark, ví dụ
1 dataFrame.write.save("
")
Read data
1. Để mở file, client gọi phương thức open ở FileSystemObject.
2.DistributedFileSystem gọi Name để lấy vị trí của blocks của file. NameNode trả về địa chỉ của 
các DataNode chứa bản sao của block đó.


3. Sau khi nhận được địa chỉ của các NameNode, Một đối tượng FSDataInputStream được trả về 
cho client. FSDataInputStream chứa DFSInputStream. DFSInputStream quản lý I/O của DataNode 
và NameNode.
4. Client gọi phương thức read() ở FSDataInputStream, DFSInputStream kết nối với DataNode gần 
nhất để đọc block đầu tiên của file. Phương thức read() được lặp đi lặp lại nhiều lần cho đến cuối 
block.
5. Sau khi đọc xong, DFSInputStream ngắt kết nối và xác định DataNode cho block tiếp theo. Khi 
DFSInputStream đọc file, nếu có lỗi xảy ra nó sẽ chuyển sang DataNode khác gần nhất có chứa 
block đó.
6. Khi client đọc xong file, gọi close().

Document Outline

  • Tại sao Mapreduce lại ra đời?
  • Mô hình lập trình
    • Ví dụ WordCount
  • Hadoop làm việc như thế nào?
  • Ưu điểm của Hadoop
  • Apache Zookeeper
  • Apache Kafka
  • Mục tiêu của HDFS
  • HDFS Architecture
    • Datanode
    • Secondary Namenode
    • Cơ chế heartbeat
    • Rack
    • Blocks
  • Hoạt động
    • Write data
    • Read data

tải về 382.36 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương