ການຕັ້ງຄ່າ Hadoop ກ່ອນຄວາມ ຈຳ ເປັນແລະການຮັກສາຄວາມປອດໄພ - ພາກທີ 2


ອາຄານ Hadoop Cluster ແມ່ນຂັ້ນຕອນ ໜຶ່ງ ທີ່ຂັ້ນຕອນເລີ່ມຕົ້ນທີ່ຂັ້ນຕອນເລີ່ມຕົ້ນຈາກການຊື້ເຄື່ອງແມ່ຂ່າຍທີ່ຕ້ອງການ, ຕິດຕັ້ງໃສ່ rack, cabling, ແລະອື່ນໆແລະວາງລົງໃນ Datacentre. ຈາກນັ້ນພວກເຮົາ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງ OS, ມັນສາມາດເຮັດໄດ້ໂດຍໃຊ້ kickstart ໃນສະພາບແວດລ້ອມໃນເວລາຈິງຖ້າວ່າຂະ ໜາດ ຂອງກຸ່ມແມ່ນໃຫຍ່. ເມື່ອ OS ຕິດຕັ້ງແລ້ວ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງກຽມເຄື່ອງແມ່ຂ່າຍ ສຳ ລັບການຕິດຕັ້ງ Hadoop ແລະພວກເຮົາ ຈຳ ເປັນຕ້ອງກຽມເຄື່ອງແມ່ຂ່າຍຕ່າງໆຕາມນະໂຍບາຍຄວາມປອດໄພຂອງອົງກອນ.

  • ການປະຕິບັດທີ່ດີທີ່ສຸດ ສຳ ລັບການ ນຳ ໃຊ້ Server Hadoop ໃນ CentOS/RHEL 7 - ພາກທີ 1

ໃນບົດຂຽນນີ້, ພວກເຮົາຈະໄດ້ຜ່ານຂໍ້ສະ ເໜີ ລ່ວງ ໜ້າ ກ່ຽວກັບລະດັບ OS ທີ່ແນະ ນຳ ໂດຍ Cloudera. ພ້ອມກັນນີ້, ພວກເຮົາໄດ້ຍົກໃຫ້ເຫັນບາງ ຄຳ ແນະ ນຳ ກ່ຽວກັບຄວາມປອດໄພທີ່ ສຳ ຄັນຕາມ CIS Benchmark ສຳ ລັບເຄື່ອງແມ່ຂ່າຍການຜະລິດ. ຄວາມປອດໄພເຫຼົ່ານີ້ສາມາດແຕກຕ່າງກັນໄປຕາມຄວາມຕ້ອງການ.

ການຕັ້ງຄ່າ Cloudera Hadoop ຄວາມຕ້ອງການເບື້ອງຕົ້ນ

ໃນທີ່ນີ້, ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບຄວາມຕ້ອງການກ່ອນລະດັບ OS ທີ່ແນະ ນຳ ໂດຍ Cloudera.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ໂປແກຼມ Transparent Huge Page (THP) ຖືກເປີດໃຊ້ໃນເຄື່ອງ Linux ເຊິ່ງມີການພົວພັນບໍ່ດີກັບວຽກຂອງ Hadoop ແລະມັນເຮັດໃຫ້ປະສິດຕິພາບຂອງ Cluster ປະຕິບັດງານໂດຍລວມ. ດັ່ງນັ້ນພວກເຮົາຕ້ອງປິດການໃຊ້ງານນີ້ເພື່ອໃຫ້ໄດ້ຜົນດີທີ່ສຸດໂດຍໃຊ້ ຄຳ ສັ່ງແອັກໂກ້ດັ່ງຕໍ່ໄປນີ້.

# echo never > /sys/kernel/mm/transparent_hugepage/enabled 
# echo never > /sys/kernel/mm/transparent_hugepage/defrag 

ໂດຍຄ່າເລີ່ມຕົ້ນ, ຄ່າ vm.swappiness ແມ່ນ 30 ຫລື 60 ສຳ ລັບເຄື່ອງ Linux ສ່ວນໃຫຍ່.

# sysctl vm.swappiness

ການມີມູນຄ່າສູງຂອງການແລກປ່ຽນປະສົບການບໍ່ໄດ້ຖືກແນະ ນຳ ໃຫ້ໃຊ້ ສຳ ລັບເຄື່ອງແມ່ຂ່າຍຂອງ Hadoop ເພາະມັນສາມາດເຮັດໃຫ້ການເກັບຂີ້ເຫຍື້ອເປັນເວລາດົນນານ. ແລະດ້ວຍຄ່າ swappiness ທີ່ສູງກວ່າ, ຂໍ້ມູນສາມາດຖືກເກັບໄວ້ເພື່ອແລກປ່ຽນຄວາມຊົງ ຈຳ ເຖິງແມ່ນວ່າພວກເຮົາມີຄວາມ ຈຳ ພຽງພໍ. ຕ່ໍາມູນຄ່າ swappiness ສາມາດເຮັດໃຫ້ຄວາມຊົງຈໍາທາງດ້ານຮ່າງກາຍທີ່ຈະມີຫນ້າຄວາມຈໍາຫຼາຍ.

# sysctl vm.swappiness=1

ຫຼື, ທ່ານສາມາດເປີດແຟ້ມເອກະສານ /etc/sysctl.conf ແລະເພີ່ມ vm.swappiness = 1 ໃນຕອນທ້າຍ.

vm.swappiness=1

ແຕ່ລະເຄື່ອງແມ່ຂ່າຍຂອງ Hadoop ຈະມີຄວາມຮັບຜິດຊອບຂອງຕົນເອງກັບຫລາຍໆບໍລິການ (daemons) ທີ່ເຮັດວຽກຢູ່ໃນນັ້ນ. ເຊີຟເວີທັງ ໝົດ ຈະສື່ສານກັບກັນແລະກັນເລື້ອຍໆໃນຈຸດປະສົງຕ່າງໆ.

ຕົວຢ່າງ, Datanode ຈະສົ່ງຫົວໃຈເຕັ້ນໄປຫາ Namenode ທຸກໆ 3 ວິນາທີເພື່ອໃຫ້ Namenode ຮັບປະກັນວ່າ Datanode ມີຊີວິດຢູ່.

ຖ້າການສື່ສານທັງ ໝົດ ເກີດຂື້ນລະຫວ່າງ daemons ທົ່ວເຊີຟເວີຕ່າງກັນຜ່ານ Firewall, ມັນຈະເປັນພາລະເພີ່ມເຕີມໃຫ້ກັບ Hadoop. ສະນັ້ນມັນເປັນການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ຈະປິດການໃຊ້ງານ firewall ໃນ server ແຕ່ລະຄົນໃນ Cluster.

# iptables-save > ~/firewall.rules
# systemctl stop firewalld
# systemctl disable firewall

ຖ້າພວກເຮົາຮັກສາ SELinux ເປີດໃຊ້ງານ, ມັນຈະກໍ່ໃຫ້ເກີດປັນຫາໃນຂະນະທີ່ຕິດຕັ້ງ Hadoop. ເນື່ອງຈາກວ່າ Hadoop ແມ່ນຄອມພິວເຕີ້ແບບ cluster, Cloudera ຜູ້ຈັດການຈະເຂົ້າເຖິງເຄື່ອງແມ່ຂ່າຍທັງ ໝົດ ທີ່ຢູ່ໃນກຸ່ມເພື່ອຕິດຕັ້ງ Hadoop ແລະບໍລິການຂອງມັນແລະມັນຈະສ້າງບັນດາລາຍການບໍລິການທີ່ ຈຳ ເປັນໃນທຸກບ່ອນທີ່ຕ້ອງການ.

ຖ້າ SELinux ເປີດໃຊ້ງານ, ມັນຈະບໍ່ປ່ອຍໃຫ້ Cloudera Manager ຄຸ້ມຄອງການຕິດຕັ້ງຕາມທີ່ມັນຕ້ອງການ. ດັ່ງນັ້ນ, ການເຮັດໃຫ້ SELinux ຈະເປັນອຸປະສັກຕໍ່ກັບ Hadoop ແລະມັນຈະກໍ່ໃຫ້ເກີດບັນຫາການປະຕິບັດ.

ທ່ານສາມາດກວດສອບສະຖານະພາບຂອງ SELinux ໂດຍໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.

# sestatus

ຕອນນີ້, ເປີດເອກະສານ/etc/selinux/config ແລະປິດ SELINUX ດັ່ງທີ່ເຫັນ.

SELinux=disabled

ຫຼັງຈາກປິດໃຊ້ SELinux ແລ້ວ, ທ່ານ ຈຳ ເປັນຕ້ອງເປີດລະບົບ ໃໝ່ ເພື່ອເຮັດໃຫ້ມັນໃຊ້ງານໄດ້.

# reboot

ໃນ Hadoop Cluster, ເຄື່ອງແມ່ຂ່າຍທັງ ໝົດ ຄວນຖືກ Time Synchronized ເພື່ອຫລີກລ້ຽງຂໍ້ຜິດພາດຂອງການຊົດເຊີຍໂມງ. The RHEL/CentOS 7 ກຳ ລັງມີ chronyd inbuilt ສຳ ລັບການເຮັດວຽກເຄືອຂ່າຍໂມງ/ເວລາ, ແຕ່ Cloudera ແນະ ນຳ ໃຫ້ໃຊ້ NTP.

ພວກເຮົາ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງ NTP ແລະ ກຳ ນົດມັນ. ເມື່ອຕິດຕັ້ງແລ້ວ, ໃຫ້ຢຸດ 'chronyd' ແລະປິດໃຊ້ງານ. ເນື່ອງຈາກວ່າ, ຖ້າເຄື່ອງແມ່ຂ່າຍມີທັງ ntpd ແລະ chronyd ແລ່ນ, Cloudera Manager ຈະພິຈາລະນາ chronyd ສຳ ລັບການປະສານງານເວລາ, ຫຼັງຈາກນັ້ນມັນຈະຖິ້ມຂໍ້ຜິດພາດເຖິງແມ່ນວ່າພວກເຮົາຈະມີເວລາປະສານກັນຜ່ານ ntp.

# yum -y install ntp
# systemctl start ntpd
# systemctl enable ntpd
# systemctl status ntpd

ດັ່ງທີ່ພວກເຮົາໄດ້ກ່າວມາຂ້າງເທິງ, ພວກເຮົາບໍ່ ຈຳ ເປັນຕ້ອງມີການເຄື່ອນໄຫວທີ່ພວກເຮົາ ກຳ ລັງໃຊ້ ntpd. ກວດເບິ່ງສະຖານະພາບຂອງ chronyd, ຖ້າມັນ ກຳ ລັງແລ່ນຢຸດແລະປິດການໃຊ້ງານ. ໂດຍຄ່າເລີ່ມຕົ້ນ, chronyd ຖືກຢຸດເວັ້ນເສຍແຕ່ຈົນກວ່າພວກເຮົາຈະເລີ່ມຕົ້ນມັນຫຼັງຈາກຕິດຕັ້ງ OS, ພຽງແຕ່ພວກເຮົາຕ້ອງການປິດການໃຊ້ງານເພື່ອຄວາມປອດໄພດ້ານຂ້າງ.

# systemctl status chronyd
# systemctl disable chronyd

ພວກເຮົາຕ້ອງຕັ້ງຊື່ໂຮດກັບ FQDN (ຊື່ໂດເມນທີ່ມີເງື່ອນໄຂຄົບຖ້ວນ). ເຄື່ອງແມ່ຂ່າຍແຕ່ລະຄົນຄວນມີຊື່ Canonical ທີ່ເປັນເອກະລັກ. ເພື່ອແກ້ໄຂບັນດາ hostname, ພວກເຮົາຕ້ອງການຕັ້ງຄ່າ DNS ຫລື/etc/hosts. ນີ້, ພວກເຮົາ ກຳ ລັງຈະຕັ້ງຄ່າ/etc/hosts.

ທີ່ຢູ່ IP ແລະ FQDN ຂອງແຕ່ລະເຊີຟເວີຄວນຖືກໃສ່ເຂົ້າໃນ/etc/hosts ຂອງເຊີຟເວີທັງ ໝົດ. ຫຼັງຈາກນັ້ນ, ມີພຽງຜູ້ຈັດການ Cloudera ເທົ່ານັ້ນທີ່ສາມາດສື່ສານເຊີຟເວີທັງ ໝົດ ດ້ວຍຊື່ໂຮດຂອງມັນ.

# hostnamectl set-hostname master1.linux-console.net

ຕໍ່ໄປ, ຕັ້ງຄ່າ/etc/hosts file. ຕົວຢ່າງ: - ຖ້າພວກເຮົາມີ 5 ກຸ່ມທີ່ມີແມ່ບົດ 2 ຄົນແລະພະນັກງານ 3 ຄົນ, ພວກເຮົາສາມາດ ກຳ ນົດຄ່າ/etc/hosts ດັ່ງລຸ່ມນີ້.

ດັ່ງທີ່ Hadoop ສ້າງຂື້ນຈາກ Java, ເຈົ້າພາບທັງ ໝົດ ຄວນຈະຕິດຕັ້ງ Java ດ້ວຍລຸ້ນທີ່ ເໝາະ ສົມ. ນີ້ພວກເຮົາຈະມີ OpenJDK. ໂດຍຄ່າເລີ່ມຕົ້ນ, Cloudera Manager ຈະຕິດຕັ້ງ OracleJDK ແຕ່, Cloudera ແນະ ນຳ ໃຫ້ມີ OpenJDK.

# yum -y install java-1.8.0-openjdk-devel
# java -version

ຄວາມປອດໄພ Hadoop ແລະແຂງແຮງ

ໃນພາກນີ້, ພວກເຮົາຈະໄປຮັກສາຄວາມປອດໄພດ້ານສິ່ງແວດລ້ອມ Harden Hadoop …

ການອັດຕະໂນມັດ 'ອັດຕະໂນມັດ' ຊ່ວຍໃຫ້ການຕິດຕັ້ງອຸປະກອນທາງກາຍະພາບເຊັ່ນ USB, CD/DVD ອັດຕະໂນມັດ. ຜູ້ໃຊ້ທີ່ມີການເຂົ້າເຖິງທາງດ້ານຮ່າງກາຍສາມາດແນບ USB ຫຼືອຸປະກອນເກັບຂໍ້ມູນໃດ ໜຶ່ງ ເພື່ອເຂົ້າຫາຂໍ້ມູນທີ່ໃສ່. ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້ເພື່ອກວດສອບວ່າມັນຖືກປິດການໃຊ້ງານຫຼືບໍ່, ຖ້າບໍ່ເຮັດໃຫ້ມັນປິດການໃຊ້ງານ.

# systemctl disable autofs
# systemctl is-enabled autofs

ເອກະສານການຕັ້ງຄ່າ grub ມີຂໍ້ມູນ ສຳ ຄັນຂອງການຕັ້ງຄ່າ boot ແລະຂໍ້ມູນປະ ຈຳ ຕົວເພື່ອປົດລັອກຕົວເລືອກ boot. ເອກະສານ config grub 'grub.cfg' ຕັ້ງຢູ່/boot/grub2 ແລະມັນໄດ້ຖືກເຊື່ອມໂຍງເປັນ /etc/grub2.conf ແລະຮັບປະກັນວ່າ grub.cfg ແມ່ນເປັນເຈົ້າຂອງໂດຍຜູ້ໃຊ້ຮາກ.

# cd /boot/grub2

ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມເພື່ອກວດສອບ Uid ແລະ Gid ແມ່ນທັງ 0/root ແລະ 'ກຸ່ມ' ຫລື 'ອື່ນໆ' ບໍ່ຄວນຈະມີການອະນຸຍາດ.

# stat /boot/grub2/grub.cfg

ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້ເພື່ອ ກຳ ຈັດສິດ ອຳ ນາດຈາກກຸ່ມອື່ນແລະກຸ່ມ.

# chmod og-rwx /boot/grub2/grub.cfg

ການຕັ້ງຄ່ານີ້ຫລີກລ້ຽງການຕັ້ງຄ່າ ໃໝ່ ຂອງເຄື່ອງແມ່ຂ່າຍທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ. ໝາຍ ຄວາມວ່າ, ມັນຮຽກຮ້ອງໃຫ້ມີລະຫັດລັບທີ່ຈະເປີດເຊີບເວີ ໃໝ່. ຖ້າມັນບໍ່ໄດ້ຖືກ ກຳ ນົດ, ຜູ້ໃຊ້ທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດສາມາດບູດເຊີບເວີແລະສາມາດເຮັດການປ່ຽນແປງສ່ວນແບ່ງ boot ໄດ້.

ໃຊ້ ຄຳ ສັ່ງດ້ານລຸ່ມເພື່ອ ກຳ ນົດລະຫັດຜ່ານ.

# grub2-mkpasswd-pbkdf2

ຕື່ມລະຫັດຜ່ານທີ່ສ້າງມາຂ້າງເທິງໃສ່ໃນແຟ້ມເອກະສານ /etc/grub.d/01_users.

ຕໍ່ໄປ, ສ້າງແຟ້ມການຕັ້ງຄ່າ grub ຄືນ ໃໝ່.

# grub2-mkconfig > /boot/grub2/grub.cfg

Prelink ແມ່ນໂປແກຼມຊອບແວທີ່ສາມາດເພີ່ມຄວາມສ່ຽງໃນເຊີຟເວີຖ້າຜູ້ໃຊ້ທີ່ເປັນອັນຕະລາຍສາມາດປະນີປະນອມຫ້ອງສະ ໝຸດ ສາມັນເຊັ່ນ libc.

ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມເພື່ອເອົາມັນອອກ.

# yum remove prelink

ພວກເຮົາຄວນພິຈາລະນາປິດການບໍລິການ/ໂປໂຕຄອນບາງຢ່າງເພື່ອຫລີກລ້ຽງການໂຈມຕີທີ່ອາດເກີດຂື້ນ.

# systemctl disable <service name>

  • ປິດການບໍລິການເຄືອຂ່າຍ - ຮັບປະກັນການບໍລິການເຄືອຂ່າຍ - ຄ່າໃຊ້ຈ່າຍ, ເວລາກາງເວັນ, ການປະຖິ້ມ, ແອັກໂກ້, ເວລາບໍ່ສາມາດໃຊ້ໄດ້. ການບໍລິການເຄືອຂ່າຍເຫຼົ່ານີ້ແມ່ນ ສຳ ລັບການແກ້ໄຂແລະທົດສອບ, ມັນແນະ ນຳ ໃຫ້ປິດການ ທຳ ງານເຊິ່ງສາມາດຫຼຸດຜ່ອນການໂຈມຕີຈາກໄລຍະໄກ.
  • ປິດການໃຊ້ງານ TFTP & FTP - ທັງສອງໂປໂຕຄອນຈະບໍ່ສະ ໜັບ ສະ ໜູນ ຄວາມລັບຂອງຂໍ້ມູນຫຼືຂໍ້ມູນປະ ຈຳ ຕົວ. ມັນເປັນການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ຈະບໍ່ມີຢູ່ໃນເຄື່ອງແມ່ຂ່າຍເວັ້ນເສຍແຕ່ວ່າມັນຖືກຮຽກຮ້ອງໃຫ້ຊັດເຈນ. ສ່ວນໃຫຍ່ໂປໂຕຄອນເຫລົ່ານີ້ຖືກຕິດຕັ້ງແລະເປີດໃຊ້ໃນ Fileservers.
  • ປິດການໃຊ້ງານ DHCP - DHCP ແມ່ນໂປໂຕຄອນທີ່ຈະຈັດສັນທີ່ຢູ່ IP ແບບເຄື່ອນໄຫວ. ມັນຖືກແນະ ນຳ ໃຫ້ປິດການໃຊ້ງານເວັ້ນເສຍແຕ່ວ່າມັນແມ່ນເຄື່ອງແມ່ຂ່າຍ DHCP ເພື່ອຫລີກລ້ຽງການໂຈມຕີທີ່ອາດເກີດຂື້ນ.
  • ປິດການໃຊ້ງານ HTTP - HTTP ແມ່ນໂປໂຕຄອນທີ່ສາມາດໃຊ້ເພື່ອເປັນເຈົ້າພາບເນື້ອຫາໃນເວັບ. ນອກ ເໜືອ ຈາກເຄື່ອງແມ່ຂ່າຍ Master/Management (ບ່ອນທີ່ WebUI ຂອງການບໍລິການຈະຖືກຕັ້ງຄ່າເຊັ່ນ CM, Hue, ແລະອື່ນໆ), ພວກເຮົາສາມາດປິດການໃຊ້ງານ HTTP ໃນເຄືອຂ່າຍແຮງງານອື່ນໆເຊິ່ງສາມາດຫລີກລ້ຽງການໂຈມຕີທີ່ອາດເກີດຂື້ນ.

ບົດສະຫຼຸບ

ພວກເຮົາໄດ້ຜ່ານການກະກຽມ server ເຊິ່ງປະກອບດ້ວຍ Cloudera Hadoop Pre-Requisites ແລະຄວາມປອດໄພບາງຢ່າງ. ຄວາມຕ້ອງການເບື້ອງຕົ້ນຂອງລະດັບ OS ທີ່ຖືກ ກຳ ນົດໂດຍ Cloudera ແມ່ນມີຄວາມ ຈຳ ເປັນ ສຳ ລັບການຕິດຕັ້ງ Hadoop ທີ່ກ້ຽງ. ໂດຍປົກກະຕິແລ້ວ, ໜັງ ສືທີ່ແຂງກະດ້າງຈະຖືກກະກຽມດ້ວຍການ ນຳ ໃຊ້ CIS Benchmark ແລະໃຊ້ໃນການກວດສອບແລະແກ້ໄຂການບໍ່ປະຕິບັດຕາມເວລາຈິງ.

ໃນການຕິດຕັ້ງ CentOS/RHEL 7 ໜ້ອຍ ທີ່ສຸດ, ພຽງແຕ່ມີການຕິດຕັ້ງໂປແກຼມເຮັດວຽກ/ຊອບແວຂັ້ນພື້ນຖານເທົ່ານັ້ນ, ນີ້ຈະຫລີກລ້ຽງຄວາມສ່ຽງແລະຄວາມສ່ຽງທີ່ບໍ່ຕ້ອງການ. ເຖິງແມ່ນວ່າມັນເປັນການຕິດຕັ້ງ Minimal Installation ຫຼາຍຄັ້ງຂອງການກວດສອບຄວາມປອດໄພຈະຖືກເຮັດກ່ອນການຕິດຕັ້ງ Hadoop, ເຖິງແມ່ນວ່າຫລັງຈາກສ້າງກຸ່ມ, ກ່ອນທີ່ຈະຍ້າຍ Cluster ເຂົ້າໃນການ ດຳ ເນີນງານ/ການຜະລິດ.