Hướng dẫn cài đặt và kiểm thử dịch vụ Hive LLAP
1.Tổng quan
Từ phiên bản Hive 2.0, Apache đã giới thiệu LLAP (Live Long And Process), và phiên bản 2.1 đã có những cải tiến đáng kể. Có thể nói rằng Hive đã bước vào kỷ nguyên tính toán trong bộ nhớ,
Theo kết quả thử nghiệm của Hortonworks, hiệu suất của llap kết hợp với tez nhanh hơn 25 lần so với hive1.x. Hãy cùng tìm hiểu cách cài đặt nhé.
2.Cài đặt LLAP
2.1Các phụ thuộc
Dịch vụ Hive LLAP yêu cầu phải cài đặt trước tez và slider (hiện tại slider có thể không bắt buộc). Do đó, trước khi cài đặt llap, bạn cần cài đặt và kiểm thử thành công tez và slider.
2.2Cấu hình
Sau khi cài đặt Ambari, cần thực hiện thêm hai bước để kích hoạt Hive LLAP:
1.Bật chế độ ưu tiên cho Hive LLAP trong yarn
2.Kích hoạt Interactive Query trong hive và cấu hình các tham số liên quan
Dưới đây là cấu hình trong hive-site.xml
<!--cấu hình llap-->
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property><br></br><br></br>
<!--hiện tại llap chỉ hỗ trợ tez làm engine-->
<property>
<name>hive.llap.execution.mode</name>
<value>all</value>
</property>
<!-- có bốn tùy chọn: auto, none, all, map, xác định có chạy trong llap hay container hay không, all означает tất cả các task đều chạy trong llap进程-->
<property>
<name>hive.execution.mode</name>
<value>llap</value>
</property>
<!-- hai tùy chọn [container, llap], xác định query chạy trong container hay llap-->
<property>
<name>hive.llap.daemon.service.hosts</name>
<value>@llap_service</value>
</property>
<!-- llap_service là tên được chỉ định trong --name khi khởi động llap, có thể tùy chỉnh theo nhu cầu-->
<property>
<name>hive.zookeeper.quorum</name>
<value>hd21:2181,hd22:2181,hd23:2181</value>
</property>
<property>
<name>hive.llap.daemon.memory.per.instance.mb</name>
<value>30720</value>
</property>
<!-- Bộ nhớ cho LlapDaemon, cần chỉ định tại đây, nếu dùng hive --service --instances có thể gặp lỗi-->
<property>
<name>hive.llap.daemon.num.executors</name>
<value>12</value>
</property>
<!-- Số core cho LlapDaemon-->
<!--dưới đây là tham số của HiveServer2, dùng để bật concurrent query cho llap-->
<property>
<name>hive.server2.tez.default.queues</name>
<value>root.spark</value>
</property>
<property>
<name>hive.server2.tez.initialize.default.sessions</name>
<value>true</value>
</property>
<property>
<description>Thiết lập số lượng concurrent queries chạy trên các queues được cấu hình bởi
hive.server2.tez.default.queues. Cài đặt này khởi động
Tez AMs (sessions) chạy dài hạn.
</description>
<name>hive.server2.tez.sessions.per.default.queue</name>
<value>3</value>
</property>
2.3Lưu ý quan trọng
Trước tiên, kiểm tra phiên bản python, không nên thấp hơn 2.5 và tốt nhất là 2.7.x. Sau đó, truy cập thư mục scripts/llap/bin trong thư mục chính của hive2.1.1,
chỉnh sửa script runLlapDaemon.sh, thêm hadoop classpath vào biến CLASSPATH, tức là thêm đường dẫn môi trường của hadoop,
để tránh lỗi không tìm thấy các thư viện liên quan khi khởi động, như sau:
3.Khởi động dịch vụ
hive --service llap --name llap_service --instances 4 --size 30g --loglevel INFO --cache 12g --executors 12 --iothreads 12 --slider-am-container-mb 2048 --args " -XX:+UseG1GC -XX:+ResizeTLAB -XX:+UseNUMA -XX:-ResizePLAB"
Các tùy chọn để khởi động dịch vụ như sau:
Khởi động thành công:
Sau khi khởi động, hệ thống sẽ tạo một thư mục như sau:
Truy cập vào thư mục có thể thấy bốn file
Trong đó, run.sh là shell script khởi động chỉ sử dụng slider để submit llap vào yarn. Chỉ cần chạy ./run.sh để khởi động vào yarn, sau khi khởi động, có thể thấy application trong yarn như sau:
RUNNING trạng thái cho thấy khởi động thành công;
Kiểm tra các nodemanager có thể thấy các daemon processes tương ứng như sau:
Khởi động tez job như sau:
Kiểm tra tài nguyên của tez job AM có thể thấy các tez tasks đều chạy trong llap, chỉ có am chạy độc lập trong container; Về hiệu suất, llap đã có cải thiện đáng kể. Với một分区聚合数据和union相应另一个分区操作,数据100g,từ góc độ tiêu tốn tài nguyên thời gian, tài nguyên đã giảm 2 lần, hiệu suất thời gian thực thi tăng 6 lần. Sau đó có thể tham khảo tpc-ds_v2.4.0 để thực hiện các bài kiểm tra hiệu suất toàn diện hơn;
Để dừng llap, chỉ cần chạy slider stop llap_service là được;