0978359287
-
0383180086
niithanoi.education@gmail.com
Trang chủ
Giới thiệu
KHÓA HỌC
LẬP TRÌNH WEB FRONT END
LẬP TRÌNH WEB BACK END
LẬP TRÌNH WEB FULL STACK
LẬP TRÌNH MOBILE
LẬP TRÌNH GAME
ĐÀO TẠO DOANH NGHIỆP
KHÓA HỌC KHÁC
Tutorials
JAVA in 7 DAY
PHP in 7 DAY
PYTHON BASIC
JAVASCRIPT
THUẬT TOÁN
Tin tức
NIIT - ICT HÀ NỘI
CÔNG NGHỆ
SỰ KIỆN NỔI BẬT ICT
THỦ THUẬT CÔNG NGHỆ
TUYỂN DỤNG
Cảm nhận
Thư viện
Liên hệ
Đăng ký học
Trang chủ
Tutorials
Master Bigdata
Cách thiết lập Hadoop Cluster với HDFS có tính sẵn sàng cao (P1)
Ngày đăng: 02/05/2019 -
Cập nhật: 02/05/2019
Cỡ chữ
Chia sẻ
Mục Lục
Kiến trúc Cluster khả dụng cao với HDFS 2.x
Giới thiệu về High Availability Cluster
NameNode Availability
Kiến trúc HDFS HA
Triển khai kiến trúc HA
Kiến trúc Cluster khả dụng cao với HDFS 2.x
Trong bài viết này, mình sẽ nói về
Kiến trúc Cluster khả dụng cao
với HDFS 2.x và
quy trình thiết lập Cluster tính khả dụng cao HDFS
.
Đây là một phần quan trọng của chương trình
Master Big Data
. Thứ tự mà các chủ đề đã được đề cập trong bài viết này như sau:
HDFS HA Architecture
Giới thiệu
NameNode Availability
Kiến trúc của HA
Triển khai HA (JournalNode và Shared storage)
Làm cách nào để thiết lập HA (Node đại biểu) trong cụm Hadoop?
Giới thiệu về High Availability Cluster
Khái niệm Cluster có tính sẵn sàng cao (
High Availability Cluster
) đã được giới thiệu trong Hadoop 2.x để giải quyết vấn đề thất bại duy nhất trong Hadoop 1.x.
Như bạn đã biết từ bài viết trước của tôi là Kiến trúc HDFS tuân theo Cấu trúc liên kết Master / Slave trong đó NameNode hoạt động như một trình nền chính và chịu trách nhiệm quản lý các nút phụ khác được gọi là DataNodes.
Master Daemon hoặc NameNode duy nhất này trở thành nút cổ chai. Mặc dù, việc giới thiệu NameNode thứ cấp đã ngăn chúng ta khỏi mất dữ liệu và giảm tải một số gánh nặng của NameNode, nhưng nó không giải quyết được vấn đề về tính khả dụng của NameNode.
NameNode Availability
Nếu bạn xem xét cấu hình tiêu chuẩn của HDFS cluster, NameNode sẽ trở thành một điểm lỗi duy nhất.
Điều này xảy ra vì thời điểm NameNode không khả dụng, toàn bộ cluster sẽ không khả dụng cho đến khi ai đó khởi động lại NameNode hoặc mang đến một cái mới.
Các lý do không sẵn sàng của NameNode có thể là:
Một sự kiện được lên kế hoạch như công việc bảo trì như đã nâng cấp phần mềm hoặc phần cứng.
Nó cũng có thể là do một sự kiện ngoài ý muốn khi NameNode gặp sự cố vì một số lý do nào đó.
Trong mỗi trường hợp trên, chúng ta có thời gian chết (Down time) mà chúng ta không thể sử dụng HDFS Cluster, chính vì thế đây là một thách thức lớn.
Kiến trúc HDFS HA
Chúng ta hãy hiểu rằng
HDFS HA Architecture
đã giải quyết vấn đề quan trọng này về tính khả dụng của NameNode:
Kiến trúc HA đã giải quyết vấn đề về tính khả dụng của NameNode bằng cách cho phép chúng ta có hai NameNode trong cấu hình active/passive.
Vì vậy, chúng tôi có hai NameNodes đang chạy cùng một lúc trong High Availability cluster:
Active NameNode
Standby/Passive NameNode.
Kiến trúc HDFS HA (Via Edureka)
Nếu một NameNode bị hỏng, NameNode khác có thể đảm nhận trách nhiệm và do đó, giảm thời gian Down time.
NameNode dự phòng phục vụ mục đích (không giống như NameNode phụ) kết hợp các khả năng chuyển đổi dự phòng cho cụm Hadoop.
Do đó, với StandbyNode, chúng ta có thể có chuyển đổi dự phòng tự động bất cứ khi nào một NameNode gặp sự cố (sự kiện ngoài dự kiến) hoặc chúng ta có thể có tự chuyển đổi dự phòng (được khởi tạo thủ công) trong thời gian bảo trì.
Có hai vấn đề trong việc duy trì tính nhất quán trong cụm tính sẵn sàng cao HDFS:
NameNode Active và Stanby NameNode phải luôn đồng bộ với nhau, tức là chúng phải có cùng một siêu dữ liệu. Điều này sẽ cho phép chúng ta khôi phục Hadoop Cluster về trạng thái namespace tương tự nơi nó bị hỏng và do đó, sẽ cung cấp cho chúng ta khả năng chuyển đổi dự phòng nhanh.
Mỗi lần chỉ nên có một NameNode hoạt động vì hai NameNode hoạt động sẽ dẫn đến hỏng dữ liệu. Loại kịch bản này được gọi là kịch bản split_brain, trong đó một cụm được chia thành cụm nhỏ hơn, mỗi nhóm tin rằng đó là cụm hoạt động duy nhất. Để tránh các kịch bản như vậy hàng rào được thực hiện. Tranh cử là một quá trình đảm bảo rằng chỉ một NameNode vẫn hoạt động tại một thời điểm cụ thể.
Triển khai kiến trúc HA
Bây giờ, bạn biết rằng trong HDFS HA Architecture, chúng ta có hai NameNodes chạy cùng một lúc. Vì vậy, chúng ta có thể triển khai cấu hình NameNode active và stanby trong hai cách sau:
Sử dụng Node đại biểu
Shared Storage bằng NFS
Chúng ta hãy hiểu hai cách thực hiện này cùng một lúc:
1. Sử dụng Node đại biểu
Triển khai HA sử dụng Node đại biểu (Via Edureka)
NameNode dự phòng và NameNode hoạt động giữ đồng bộ với nhau thông qua một nhóm các node hoặc daemons được gọi là
JournalNodes
.
JournalNodes
theo các cấu trúc liên kết vòng trong đó các node được kết nối với nhau để tạo thành một vòng.
JournalNodes
yêu cầu đến với nó và sao chép thông tin vào các node khác trong vòng. Điều này cung cấp khả năng chịu lỗi trong trường hợp lỗi
JournalNodes
.
NameNode hoạt động chịu trách nhiệm cập nhật EditLogs (thông tin siêu dữ liệu) có trong JournalNodes.
StandbyNode đọc các thay đổi được thực hiện cho EditLogs trong JournalNode và áp dụng nó vào namespace của chính nó một cách không đổi.
Trong quá trình chuyển đổi dự phòng, StandbyNode đảm bảo rằng nó đã cập nhật thông tin dữ liệu meta của mình từ
JournalNodes
trước khi trở thành Active NameNode mới. Điều này làm cho trạng thái namespace hiện tại được đồng bộ hóa với trạng thái trước khi chuyển đổi dự phòng.
Địa chỉ IP của cả hai NameNodes đều khả dụng cho tất cả các DataNodes và chúng gửi heartbeat và chặn thông tin vị trí cho cả NameNode. Điều này cung cấp khả năng chuyển đổi dự phòng nhanh (tốn ít thời gian hơn) vì StandbyNode có thông tin cập nhật về vị trí khối trong cụm.
Tranh cử NameNode
Bây giờ, như đã thảo luận trước đó, điều rất quan trọng là đảm bảo rằng chỉ có một NameNode hoạt động tại một thời điểm. Vì vậy, Tranh Cử là một quá trình để đảm bảo quy tắc này trong cụm.
JournalNodes thực hiện việc Tranh Cử này bằng cách chỉ cho phép một NameNode trở thành writer tại một thời điểm.
NameNode ở chế độ chờ chịu trách nhiệm viết cho Nhật ký và cấm mọi NameNode khác active.
Cuối cùng, Active NameNode mới có thể thực hiện các hoạt động của nó một cách an toàn.
2. Sử dụng Shared Storage
Triển khai HA sử dụng Shared Storage (Via Edureka)
StandbyNode và NameNode hoạt động giữ đồng bộ với nhau bằng cách sử dụng một thiết bị lưu trữ được chia sẻ.
NameNode hoạt động ghi lại bản ghi của bất kỳ sửa đổi nào được thực hiện trong namespace của nó thành EditLog có trong bộ lưu trữ được chia sẻ này.
StandbyNode đọc các thay đổi được thực hiện cho EditLogs trong bộ lưu trữ được chia sẻ này và áp dụng nó vào namespace của chính nó.
Bây giờ, trong trường hợp chuyển đổi dự phòng, StandbyNode cập nhật thông tin siêu dữ liệu của nó bằng cách sử dụng EditLogs trong bộ nhớ chia sẻ.
Sau đó, nó chịu trách nhiệm của Active NameNode. Điều này làm cho trạng thái namespace hiện tại được đồng bộ hóa với trạng thái trước khi chuyển đổi dự phòng.
Quản trị viên phải định cấu hình ít nhất một phương thức Tranh Cử để tránh tình huống Split-Brain.
Hệ thống có thể sử dụng một loạt các cơ chế tranh cử. Nó có thể bao gồm việc hủy quá trình NameNode, và thu hồi quyền truy cập của nó vào thư mục lưu trữ được chia sẻ.
Như một phương án cuối cùng, chúng ta có thể tạo hàng rào cho NameNode đang hoạt động trước đó bằng một kỹ thuật được gọi là STONITH hoặc "Bắn vào đầu của node khác".
STONITH sử dụng một đơn vị phân phối điện chuyên dụng để tắt nguồn máy NameNode.
Chuyển đổi dự phòng tự động (Automatic Failover)
Failover là một thủ tục trong đó một hệ thống tự động chuyển điều khiển sang hệ thống thứ cấp khi phát hiện ra lỗi hoặc lỗi. Có hai loại chuyển đổi dự phòng:
Graceful Failover
: Trong trường hợp này, chúng ta tự khởi động chuyển đổi dự phòng để bảo trì định kỳ.
Automatic Failover
: Trong trường hợp này, chuyển đổi dự phòng được khởi động tự động trong trường hợp lỗi NameNode (sự kiện ngoài dự kiến).
Apache Zookeeper là một dịch vụ cung cấp khả năng chuyển đổi dự phòng tự động trong cụm HDFS High Availabilty.
Nó duy trì một lượng nhỏ dữ liệu phối hợp, thông báo cho khách hàng về những thay đổi trong dữ liệu đó và giám sát các lỗi của khách hàng.
Zookeeper duy trì một phiên với NameNodes. Trong trường hợp thất bại, phiên sẽ hết hạn và Zookeeper sẽ thông báo cho các NameNodes khác để bắt đầu quá trình chuyển đổi dự phòng.
Trong trường hợp thất bại NameNode, NameNode thụ động khác có thể khóa trong Zookeeper nói rằng nó muốn trở thành ActiveNode tiếp theo.
ZookeerFailoverControll (ZKFC) là ứng dụng khách Zookeeper cũng theo dõi và quản lý trạng thái NameNode. Mỗi NameNode cũng chạy ZKFC. ZKFC chịu trách nhiệm theo dõi sức khỏe của NameNodes theo định kỳ.
Bây giờ bạn đã hiểu tính khả dụng cao trong cụm Hadoop là gì, đã đến lúc thiết lập nó. Để thiết lập Tính sẵn sàng cao trong cụm Hadoop, bạn phải sử dụng Zookeeper trong tất cả các node.
Các deamon trong Active NameNode là:
Zookeeper
Zookeeper Fail Over controller
JournalNode
NameNode
Các deamon trong Stanby NameNode là:
Zookeeper
Zookeeper Fail Over controller
JournalNode
NameNode
Các deamon trong Data NameNode là:
Zookeeper
JournalNode
DataNode
Chúng ta sẽ đến với phần Hướng dẫn cài đặt chi tiết Cụm HDFS tính khả dụng cao ở phần 2.
>>> Nếu bạn muốn thành thạo HDFS và Hadoop, hãy xem ngay
Khóa học Big Data và Hadoop
được thiết kế đặc biệt dành cho dân doanh nghiệp.
Về trang trước
Gửi email
in trang
Chia sẻ
Bình luận Facebook
Cùng danh mục
1
Giới thiệu về BIG DATA: Types, Characteristics & Benefits
2
Hướng dẫn học Hadoop: Features, Components, Cluster & Topology
3
Cách cài đặt Hadoop và Hướng dẫn cấu hình từng bước trên Ubuntu
4
Thiết lập Multi Node Clustor trong Hadoop 2.X
5
Cách thiết lập Hadoop Cluster với HDFS có tính sẵn sàng cao (P1)
Tutorial
Học PHP trong 7 ngày
Học Lập Trình Python
Học Java trong 7 ngày
JavaScript
HTML
Thuật toán
CSS
JAVA OOP
SQL
Master Bigdata
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Gửi yêu cầu tư vấn thành công!
Tư vấn cho tôi ngay !
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
Gửi cho tôi
Đóng lại
Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
0978 359 287
-
0383 180 086
hello@niithanoi.edu.vn
Chọn khóa học
KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
KHÓA HỌC LẬP TRÌNH PHP WEB
Khóa học PHP Full stack [2023] cho người mới bắt đầu
Khóa học BIG DATA với Hadoop và Spark
Khóa học Lập trình Android tại Hà Nội
[Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
LẬP TRÌNH GAME
Khóa học Lập trình Game Unity
LẬP TRÌNH WEB FRONT END
KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
LẬP TRÌNH WEB BACK END
LẬP TRÌNH JAVA WEB VỚI FRAME WORK
Lập trình Web với Django
Lập trình PHP với Laravel Framework
CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
LẬP TRÌNH WEB FULL STACK
Khóa học Java Full stack (IJFD)
LẬP TRÌNH MOBILE
FRONT-END VỚI REACTJS VÀ REACT NATIVE
Lập trình Android Nâng cao
ĐÀO TẠO CHO DOANH NGHIỆP
KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
Khóa học Automation Testing Chuyên nghiệp
KHÓA HỌC DỰ ÁN
Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
KHÓA HỌC KHÁC
VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
VBA Excel Nâng cao
Khóa học JMeter: Performance Testing
Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký ngay
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!