Hadoopクラスターの構築 は、必要なサーバーの購入、ラックへの取り付け、ケーブル接続などから始まり、データセンターに配置する段階的なプロセスです。次に、OSをインストールする必要があります。クラスターのサイズが大きい場合は、リアルタイム環境でキックスタートを使用してインストールできます。 OSをインストールしたら、Hadoopインストール用にサーバーを準備し、組織のセキュリティポリシーに従ってサーバーを準備する必要があります。
要件
- CentOS / RHEL 7にHadoopサーバーをデプロイするためのベストプラクティス–パート1
この記事では、 Clouderaが推奨するOSレベルの前提条件について説明します。 。また、CISベンチマークに従って、いくつかの重要なセキュリティ強化のヒントを強調しました。 本番サーバー用。これらのセキュリティ強化は、要件に応じて異なる場合があります。
ClouderaHadoopの前提条件の設定
ここでは、 Clouderaが推奨するOSレベルの前提条件について説明します。 。
1。透明な巨大ページを無効にする
デフォルトでは、透明な巨大なページ ( THP )は、 Hadoopとの相互作用が不十分なLinuxマシンで有効になっています ワークロードが発生すると、クラスターの全体的なパフォーマンスが低下します。したがって、次のechoコマンドを使用して最適なパフォーマンスを実現するには、これを無効にする必要があります。
# echo never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag

2。 VMSwappinessを変更する
デフォルトでは、 vm.swappiness 値は30 または60 ほとんどのLinuxマシン用。
# sysctl vm.swappiness

交換性の値が高い Hadoopにはお勧めしません ガベージコレクションの一時停止が長くなる可能性があるため、サーバー。また、swappinessの値が高いほど、十分なメモリがある場合でも、データをキャッシュしてメモリをスワップできます。 swappinessの値を低くすると、物理メモリに多くのメモリページを含めることができます。
# sysctl vm.swappiness=1
または、ファイル /etc/sysctl.confを開くことができます "vm.swappiness=1"
を追加します 最後に。
vm.swappiness=1
3。ファイアウォールを無効にする
各Hadoopサーバーは、複数のサービス(デーモン)に対して独自の責任を負います。 )その上で実行されます。すべてのサーバーは、さまざまな目的で頻繁に相互に通信します。
たとえば、データノード Namenode になるように、3秒ごとにNamenodeにハートビートを送信します データノードが 生きています。
ファイアウォールを介して異なるサーバー間でデーモン間ですべての通信が行われる場合、Hadoopに余分な負担がかかります。したがって、クラスタ内の個々のサーバーでファイアウォールを無効にすることをお勧めします。
# iptables-save > ~/firewall.rules # systemctl stop firewalld # systemctl disable firewall

4。 SELinuxを無効にする
SELinuxを維持する場合 有効にすると、 Hadoopのインストール中に問題が発生します 。 Hadoopとして はクラスターコンピューティングであり、 Cloudera Manager クラスタ内のすべてのサーバーに到達してHadoopとそのサービスをインストールし、必要に応じて必要なサービスディレクトリを作成します。
SELinuxが有効になっている場合、ClouderaManagerが必要に応じてインストールを制御することはできません。したがって、SELinuxを有効にすることは、Hadoopの障害となり、パフォーマンスの問題を引き起こします。
SELinuxのステータスを確認できます 以下のコマンドを使用します。
# sestatus

次に、 / etc / selinux / configを開きます ファイルを作成してSELINUXを無効にします 示されているように。
SELinux=disabled

SELinuxを無効にした後、システムを再起動してアクティブにする必要があります。
# reboot
5。 NTPサービスをインストールする
Hadoop Cluster 、すべてのサーバーを時間同期する必要があります クロックオフセットエラーを回避するため。 RHEL / CentOS 7 chronydを使用しています ネットワーククロック/時刻同期用に組み込まれていますが、Clouderaは NTPを使用することをお勧めします 。
NTPをインストールする必要があります そしてそれを構成します。インストールしたら、「chronyd」を停止します ‘および無効にします。なぜなら、サーバーが両方の ntpdを持っている場合 およびchronyd 実行中、ClouderaManagerはchronydを考慮します 時間同期の場合、ntpを介して時間を同期していても、エラーがスローされます。
# yum -y install ntp # systemctl start ntpd # systemctl enable ntpd # systemctl status ntpd

6。 Chronydを無効にする
上で述べたように、chronydは必要ありません ntpdを使用しているためアクティブ 。 chronydのステータスを確認してください 、実行中の場合は停止して無効にします。デフォルトでは、 chronyd OSのインストール後に起動するまでは停止しますが、安全のために無効にする必要があります。
# systemctl status chronyd # systemctl disable chronyd

7。 FQDN(完全修飾ドメイン名)を設定する
ホスト名を設定する必要があります FQDN (完全修飾ドメイン名 )。各サーバーには、一意の正規名が必要です。ホスト名を解決するには、DNSまたは / etc / hostsを構成する必要があります 。ここでは、 / etc / hostsを構成します 。
各サーバーのIPアドレスとFQDNは/etc / hostsに入力する必要があります すべてのサーバーの。次に、 Cloudera Managerのみ すべてのサーバーをそのホスト名と通信できます。
# hostnamectl set-hostname master1.tecmint.com
次に、 / etc / hostsを構成します ファイル。例:– 2つのマスターと3つのワーカーを持つ5つのノードクラスターがある場合、 / etc / hostsを構成できます。 以下のように。

8。 Java Development Kit(JDK)のインストール
Hadoopとして Javaで構成されています 、すべてのホストが Javaを持っている必要があります 適切なバージョンでインストールされます。ここでは、 OpenJDKを使用します 。デフォルトでは、 Cloudera Manager OracleJDKをインストールします ただし、Clouderaでは OpenJDKを使用することをお勧めします 。
# yum -y install java-1.8.0-openjdk-devel # java -version

Hadoopのセキュリティと強化
このセクションでは、Hadoop環境のセキュリティを強化します…
1。自動マウントを無効にする
‘ autofsの自動マウント ‘は、USB、CD/DVDなどの物理デバイスの自動マウントを可能にします。物理的にアクセスできるユーザーは、挿入データにアクセスするためにUSBまたは任意のストレージメディアを接続できます。以下のコマンドを使用して、無効になっているかどうかを確認します。無効になっていない場合は、無効にします。
# systemctl disable autofs # systemctl is-enabled autofs

2。セキュアブート設定
グラブ 構成ファイルには、ブート設定の重要な情報と、ブートオプションのロックを解除するための資格情報が含まれています。 grub構成ファイル‘ grub.cfg ‘は / boot / grub2にあります /etc/grub2.confとしてリンクされています grub.cfgを確認します rootユーザーが所有しています。
# cd /boot/grub2

以下のコマンドを使用して、 Uidを確認します およびGid 両方とも0/ root および「グループ 」または「その他 ’には許可を与えるべきではありません。
# stat /boot/grub2/grub.cfg

以下のコマンドを使用して、他のグループから権限を削除します。
# chmod og-rwx /boot/grub2/grub.cfg

3。ブートローダーのパスワードを設定する
この設定により、サーバーの他の不正な再起動が回避されます。つまり、サーバーを再起動するにはパスワードが必要です。設定されていない場合、権限のないユーザーがサーバーを起動し、起動パーティションに変更を加えることができます。
以下のコマンドを使用してパスワードを設定します。
# grub2-mkpasswd-pbkdf2

上記で作成したパスワードを/etc/grub.d/01_usersに追加します ファイル。

次に、grub構成ファイルを再生成します。
# grub2-mkconfig > /boot/grub2/grub.cfg

4。プレリンクツールを削除する
プレリンク は、悪意のあるユーザーが libc などの一般的なライブラリを侵害する可能性がある場合に、サーバーの脆弱性を高める可能性のあるソフトウェアプログラムです。 。
以下のコマンドを使用して削除します。
# yum remove prelink
5。不要なサービスを無効にする
潜在的な攻撃を回避するために、一部のサービス/プロトコルを無効にすることを検討する必要があります。
# systemctl disable <service name>
- ネットワークサービスを無効にする –ネットワークサービスを確認します–料金、日中、廃棄、エコー、時間は有効になっていません。これらのネットワークサービスはデバッグとテスト用です。リモート攻撃を最小限に抑えることができる無効にすることをお勧めします。
- TFTPとFTPを無効にする –どちらのプロトコルも、データまたは資格情報の機密性をサポートしません。明示的に必要とされない限り、サーバーに存在しないことをお勧めします。ほとんどの場合、これらのプロトコルはファイルサーバーにインストールされ、有効になっています。
- DHCPを無効にする – DHCPは、IPアドレスを動的に割り当てるプロトコルです。潜在的な攻撃を避けるために、DHCPサーバーでない限り無効にすることをお勧めします。
- HTTPを無効にする – HTTPは、Webコンテンツをホストするために使用できるプロトコルです。マスター/管理サーバー(サービスのWebUIがCM、Hueなどのように構成される)とは別に、潜在的な攻撃を回避できる他のワーカーノードでHTTPを無効にすることができます。
概要
ClouderaHadoopの前提条件で構成されるサーバーの準備を完了しました いくつかのセキュリティ強化。 Clouderaによって定義されたOSレベルの前提条件は、Hadoopをスムーズにインストールするために必須です。通常、強化スクリプトはCISベンチマークを使用して作成され、コンプライアンス違反をリアルタイムで監査および修正するために使用されます。
CentOS / RHEL 7の最小限のインストールで 、基本的な機能/ソフトウェアのみがインストールされます。これにより、不要なリスクと脆弱性が回避されます。最小限のインストールですが、Hadoopをインストールする前、クラスターを構築した後、クラスターを運用/本番環境に移行する前に、セキュリティ監査を複数回繰り返します。