Hadoopクラスターの構築Hadoop分散クラスターの構築

1.はじめに

    Hadoop 2.0では、2つのNameNodeのデータは実際にはリアルタイムで共有されます。新しいHDFSでは、共有メカニズムであるQuorum Journal Node(JournalNode)クラスターまたはNnetwork File System(NFS)を使用して共有します。NFSはオペレーティングシステムレベルであり、JournalNodeはhadoopレベルであり、JournalNodeクラスターをデータ共有に使用します(これも主流のプラクティスです)。次の図に示すように、JournalNodeのアーキテクチャ図です。

 

 

   データ同期の場合、2つのNameNodeは、JournalNodeと呼ばれる独立したプロセスのセットを介して互いに通信します。アクティブ状態のNameNode名前空間に変更があると、ほとんどのJournalNodesプロセスに通知されます。スタンバイ状態のNameNodeは、JNの変更情報を読み取ることができ、編集ログで変更を監視しており、独自の名前空間に変更を適用します。スタンバイは、クラスターに障害が発生したときに、名前空間の状態が完全に同期されることを保証できます。

 

 

 

    HAクラスターの場合、一度にアクティブになるNameNodeが1つだけであることを確認することが重要です。そうしないと、2つのNameNodeのデータステータスが発散し、データが失われたり、誤った結果が生成されたりする可能性があります。これを確実にするには、ZooKeeperを使用する必要があります。最初に、HDFSクラスター内の2つのNameNodeがZooKeeperに登録されます。アクティブなNameNodeに障害が発生すると、ZooKeeperはこの状況を検出でき、スタンバイNameNodeを自動的にアクティブな状態に切り替えます。

 

二、配置

1.環境を準備する

    ここで5台のサーバーのクラスターをセットアップします。もちろん、最低の3台も構築できます。

    Zookeeperバージョン:3.4.7

    Hadoopバージョン:2.7.1

1。ホストの役割の割り当て

    各サーバーの役割の割り当ては次のとおりです。自分のサーバーの数に応じて調整できます。

1> hadoop01

    Zookeeper、NameNode、DFSZKFailoverController、ResourceManager。

2> hadoop02

    Zookeeper、NameNode2、DFSZKFailoverController。

3> hadoop03

    Zookeeper、DataNode、NodeManager、JournalNode。

4> hadoop04

    Zookeeper、DataNode、NodeManager、JournalNode。

5> hadoop05

    Zookeeper、DataNode、NodeManager、JournalNode。

2。ファイアウォールをオフにする

    一般的な運用環境では、システムに付属しているファイアウォールは必要ありません。外部ファイアウォールがない場合はオンにできますが、通信ポートはファイアウォールの通過を許可する必要があります。ここでは、実験を簡単にするために、ファイアウォールを直接オフにしています。

service iptables status #查看防火墙状态
service iptables start #立即开启防火墙,但是重启后失效。
service iptables stop #立即关闭防火墙,但是重启后失效。

#重启后生效

chkconfig iptables on #开启防火墙,重启后生效。 chkconfig iptables off #关闭防火墙,重启后生效。

  

3。ホスト名を構成する

    / etc / sysconfig / networkファイルを変更します

vim /etc/sysconfig/network

    !!!!! Hadoopがインストールされているクラスターのホスト名に下線を付けることはできません!!それ以外の場合は、ホストが見つかりません!起動できません!

source /etc/sysconfig/network

    上記の変更後、ホスト名はすぐには変更されないため、有効にするには再起動する必要があります。したがって、次のコマンドを使用して、すぐに変更を加えることができます。

hostname

4。ホストを構成する

    / etc / hostsファイルを変更します

vim /etc/hosts

    以下に記入

127.0.0.1 hadoop01
其他主机和ip对应信息。。。

    上記の2つの操作は、IPの分離を実現するためのものです。複数のフレームワークサービスですべてのIPを入力する場合、サーバーのIPが変更されると、各サービスフレームワークがIPを変更する必要があります。ホスト名。サーバーのIPが変更された場合は、hostsファイル内のホスト名とIP間のマッピング関係を変更するだけで済みます。

5。パスワードなしのログインを構成する

    クラスタ内のすべてのホストは、互いに密かにログインする必要があります。

    キーを生成:

ssh-keygen

公開鍵を送信します。

ssh-copy-id root@hadoop01

    このとき、公開鍵はリモートホストの/root/.ssh/authorized_keysファイルに保存され、既知のホスト情報はknown_hostsに保存されます。再度アクセスするときは、パスワードを入力する必要はありません。

ssh hadoop01

    このコマンドを使用してリモート接続し、パスワードなしで接続できるかどうかを確認します。

    マシンに送信する必要があることに注意してください。

6。jdkをインストールする

1>解凍してインストール

    fdを介してjdkインストールパッケージをアップロードして解凍します。コマンドは次のとおりです。

​​​​​​​tar -zxvf [jdk安装包位置]

2>環境変数を設定する

    / etc /プロファイルを変更します。

    このファイルは、各ユーザーがログインするときに実行される環境変数設定です。このファイルは、ユーザーが初めてログインするときに実行されます。/etc/profile.dディレクトリの設定ファイルからシェル設定を収集します。

vim /etc/profile

    ファイルの最後に次のコンテンツを追加し、保存して終了します。

export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin

3>リロード

    プロファイルを再ロードして、構成を有効にします。

source /etc/profile

    環境変数の構成が完了したら、環境変数が有効かどうかをテストします。

echo $JAVA_HOME
java -version

7。Zookeeperクラスターを構築する

    参照:ZooKepperクラスターの構築

2. hadoopを構成する

1。解凍

    インストールパッケージをサーバーにアップロードして解凍します。

tar -zxvf hadoop-2.7.1_64bit.tar.gz

2。構成を変更する

    次のファイルは、完全に配布されたHadoop向けに構成する必要があるすべてのファイルです。この構成は、上記の5つのサーバーコンポーネントのクラスターに従います。

1> hadoop-env.sh

    このファイルで、java環境変数を/ etc /プロファイルファイルのjava環境変数と同じ値に変更します。

JAVA_HOME=/home/app/jdk1.7.0_45/

2> core-site.xml

    以下は、このファイルの構成テンプレートです。

<configuration>
<!-- 指定hdfs的nameservice为ns -->
<property> <name>fs.defaultFS</name> <value>hdfs://ns</value> </property> <!--指定hadoop数据临时存放目录--> <property> <name>hadoop.tmp.dir</name> <value>/root/work/hadoop-2.7.1/tmp</value> </property> <!--指定hdfs操作数据的缓冲区大小 可以不配--> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> <!--指定zookeeper地址--> <property> <name>ha.zookeeper.quorum</name> <value>hadoop01:2181,hadoop02:2181,hadoop03:2181,hadoop04:2181,hadoop05:2181</value> </property> </configuration>

3> hdfs-site.xml

<configuration>
<!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>ns</value> </property> <!-- ns下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.ns</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns.nn1</name> <value>hadoop01:9000</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.ns.nn1</name> <value>hadoop01:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns.nn2</name> <value>hadoop02:9000</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.ns.nn2</name> <value>hadoop02:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop03:8485;hadoop04:8485;hadoop05:8485/ns</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/root/work/hadoop-2.7.1/tmp/journal</value> </property> <!-- 开启NameNode故障时自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.ns</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制 --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!-- 使用隔离机制时需要ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- namenode存储位置 --> <property> <name>dfs.namenode.name.dir</name> <value>/root/work/hadoop-2.7.1/tmp/name</value> </property>     <!-- dataode存储位置 --> <property>     <name>dfs.datanode.data.dir</name> <value>/root/work/hadoop-2.7.1/tmp/data</value> </property> <!-- 副本数量根据自己的需求配置,这里配置2个 --> <property> <name>dfs.replication</name> <value>2</value> </property> <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 --> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>

4> mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

5> yarn-site.xml

<configuration>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>     <name>yarn.nodemanager.aux-services</name>     <value>mapreduce_shuffle</value>     </property>   <!-- 指定resourcemanager地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> </configuration>

6>スレーブ

    ここでは、hadoop03、hadoop04、hadoop05をデータを保存するノードとして構成します。

vim slaves
hadoop03
hadoop04
hadoop05

3。環境変数

    設定ファイル/ etc /プロファイル:

vim /etc/profile

最後に次のコンテンツを追加します。

export HADOOP_HOME=[hadoop的安装路径]
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

4。他のサーバー

    scpコマンドを使用して、構成ファイルを他のサーバーにコピーします。

    jdk、Zookeeper、および他のサーバーの他の構成がこのサーバーの現在の構成と同じである場合は、変更せずに直接コピーできることに注意してください。

三、スタート

    完全に分散されたhadoopを開始します。

1. zkクラスターを起動します 

./zkServer.sh start

2. jnクラスターを起動します

sbin/hadoop-daemons.sh start journalnode

1。zkfcのフォーマット

    最初のブートをフォーマットする

hdfs zkfc -formatZK

2。hdfsのフォーマット

    最初のブートをフォーマットする

hadoop namenode -format

3. NameNodeを起動します

hadoop01の場合:

hadoop-daemon.sh start namenode

hadoop02の場合:

hdfs namenode -bootstrapStandby #把NameNode的数据同步到hadoop02上
hadoop-daemon.sh start namenode #启动备用的namenode

 

4. DataNodeを起動します

hadoop-daemons.sh start datanode

5.糸を始める

start-yarn.sh

6. ZKFCを起動します

    hadoop01内

hadoop-daemon.sh start zkfc

    hadoop02で

hadoop-daemon.sh start zkfc

 

7.起動後

    起動が完了したら、jpsコマンドを使用して各サーバーを表示します。プロセスは次のとおりです。

    hadoop01:

10877 QuorumPeerMain
11351 NameNode
11871 DFSZKFailoverController 11570 ResourceManager

    hadoop02:

16019 QuorumPeerMain
16214 NameNode
16344 DFSZKFailoverController

    hadoop03:

16548 QuorumPeerMain
16783 DataNode
16893 NodeManager 16701 JournalNode

    hadoop04:

16565 QuorumPeerMain
16798 DataNode
16908 NodeManager 16716 JournalNode

    hadoop05:

16562 QuorumPeerMain
16809 DataNode
16919 NodeManager 16727 JournalNode

    この時点で、クラスター全体が構築され、通常どおり使用できます。

 

 

Hadoopの完全分散クラスターの構築https://my.oschina.net/u/3754001/blog/1802135

 

Hadoopクラスターのセットアップ  http://hadoop.apache.org/docs/r1.0.4/cn/cluster_setup.html

Hadoop分散クラスターの構築  https://www.cnblogs.com/skyturtle/p/9979413.html

 

おすすめ

転載: www.cnblogs.com/yuluoxingkong/p/12718376.html