Hadoopクラスタのセットアップでドッカー

ドッキングウィンドウは、クラスタのテスト環境を構築し、テンセントのクラウドホストを使用してください。

環境

図1に示すように、オペレーティング・システム:CentOSの7.2 64ビット

ネットワーク設定

ホスト名 IP
クラスタマスター 172.18.0.2
クラスタスレーブ1 172.18.0.3
クラスタスレーブ2 172.18.0.4
クラスタslave3 172.18.0.5

ドッカーインストール

curl -sSL https://get.daocloud.io/docker | sh

##换源
###这里可以参考这篇文章http://www.jianshu.com/p/34d3b4568059
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://67e93489.m.daocloud.io

##开启自启动
systemctl enable docker
systemctl start docker

CentOSにミラー私を得ました

docker pull daocloud.io/library/centos:latest

使用docker psダウンロードした画像を表示します

コンテナを作成します。

クラスタアーキテクチャによると、あなたがコンテナを作成するときに、あなたが最初の固定IPサブネットを作成するために、ドッキングウィンドウで次のコマンドを使用する必要があり、固定IPを設定する必要があります

docker network create --subnet=172.18.0.0/16 netgroup

一度あなたが固定IPコンテナを作成することができます作成​​したドッカサブネット

#cluster-master
#-p 设置docker映射到容器的端口 后续查看web管理页面使用
docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name cluster-master -h cluster-master -p 18088:18088 -p 9870:9870 --net netgroup --ip 172.18.0.2 daocloud.io/library/centos /usr/sbin/init

#cluster-slaves
docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name cluster-slave1 -h cluster-slave1 --net netgroup --ip 172.18.0.3 daocloud.io/library/centos /usr/sbin/init

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name cluster-slave2 -h cluster-slave2 --net netgroup --ip 172.18.0.4 daocloud.io/library/centos /usr/sbin/init

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name cluster-slave3 -h cluster-slave3 --net netgroup --ip 172.18.0.5 daocloud.io/library/centos /usr/sbin/init

コンソールを起動し、へのdockerコンテナ:

docker exec -it cluster-master /bin/bash

OpenSSHの無料密なログインをインストールします。

1、cluster-masterインストール:

#cluster-master需要修改配置文件(特殊)
#cluster-master

#安装openssh
[root@cluster-master /]# yum -y install openssh openssh-server openssh-clients

[root@cluster-master /]# systemctl start sshd
####ssh自动接受新的公钥
####master设置ssh登录自动添加kown_hosts
[root@cluster-master /]# vi /etc/ssh/ssh_config
#将原来的StrictHostKeyChecking ask
#设置StrictHostKeyChecking为no
#保存
[root@cluster-master /]# systemctl restart sshd

図2に示すように、スレーブに搭載されているのOpenSSH

#安装openssh
[root@cluster-slave1 /]#yum -y install openssh openssh-server openssh-clients

[root@cluster-slave1 /]# systemctl start sshd

3、クラスタ・マスター公開鍵配布

マスターマシン上で実行
のssh-keygenは-t rsaの
ラウンドすべての方法、完了〜/ .sshディレクトリの後に発生した、そこにid_rsaと(秘密鍵ファイル)とディレクトリにid_rsa.pub(キーファイル)は、その後、id_rsa.pub再authorized_keysにファイルするように指示

ssh-keygen -t rsa
#一路回车

[root@cluster-master /]# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

ファイルは、クラスタのスレーブ・マスターへの公開鍵ファイルを配布するscpコマンドを使用して生成された後

[root@cluster-master /]# ssh root@cluster-slave1 'mkdir ~/.ssh'
[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave1:~/.ssh
[root@cluster-master /]# ssh root@cluster-slave2 'mkdir ~/.ssh'
[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave2:~/.ssh
[root@cluster-master /]# ssh root@cluster-slave3 'mkdir ~/.ssh'
[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave3:~/.ssh

テスト配信(sshのルート@クラスタ・スレーブ1)の完了後には、入力されたログインパスワードを避けることができるかどうか

Ansibleのインストール

[root@cluster-master /]# yum -y install epel-release
[root@cluster-master /]# yum -y install ansible
#这样的话ansible会被安装到/etc/ansible目录下

この時点で、我々はansible hostsファイルを編集するために行きます

vi /etc/ansible/hosts
[cluster]
cluster-master
cluster-slave1
cluster-slave2
cluster-slave3

[master]
cluster-master

[slaves]
cluster-slave1
cluster-slave2
cluster-slave3

ドッキングウィンドウコンテナのホストの設定

/ etc / hostsファイルは、コンテナが始まるが、直接行く血管が再起動後にクラスタホストを得ることができるようにするために、再起動後に保持することができないコンテナの内容を変更するときに書き換えされているので、後者のホストを書き換える方法は、コンテナを開始しました。
〜/ .bashrcの中で次のように追加する必要が

:>/etc/hosts
cat >>/etc/hosts<<EOF
127.0.0.1   localhost
172.18.0.2  cluster-master
172.18.0.3  cluster-slave1
172.18.0.4  cluster-slave2
172.18.0.5  cluster-slave3
EOF
source ~/.bashrc

有効にする設定ファイルは、/ etc / hostsファイルは、コンテンツを要求するように変更されている見ることができます

[root@cluster-master ansible]# cat /etc/hosts
127.0.0.1   localhost
172.18.0.2  cluster-master
172.18.0.3  cluster-slave1
172.18.0.4  cluster-slave2
172.18.0.5  cluster-slave3

.bashrcの下でansibleを持つクラスタのスレーブを配布します

ansible cluster -m copy -a "src=~/.bashrc dest=~/"

コンフィギュレーションソフトウェア環境

JDK1.8のにダウンロードし、解凍し/optたディレクトリ

hadoop3ダウンロード/optディレクトリ、インストールパッケージを抽出し、リンクファイルを作成します

tar -xzvf hadoop-3.2.0.tar.gz
ln -s hadoop-3.2.0 hadoop

Java環境変数と設定のHadoop

編集~/.bashrcファイル

# hadoop
export HADOOP_HOME=/opt/hadoop-3.2.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

#java
export JAVA_HOME=/opt/jdk8
export PATH=$HADOOP_HOME/bin:$PATH

ファイルを有効にします:

source .bashrc

コンフィギュレーション・ファイルを実行するために必要なHadoopの構成

cd $HADOOP_HOME/etc/hadoop/

1、修正core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <!-- file system properties -->
    <property>
        <name>fs.default.name</name>
        <value>hdfs://cluster-master:9000</value>
    </property>
    <property>
    <name>fs.trash.interval</name>
        <value>4320</value>
    </property>
</configuration>

2、HDFS-site.xmlのを修正

<configuration>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoop/tmp/dfs/name</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoop/data</value>
 </property>
 <property>
   <name>dfs.replication</name>
   <value>3</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions.superusergroup</name>
   <value>staff</value>
 </property>
 <property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
 </property>
 </configuration>

3、変性mapred-site.xmlの

<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
    <name>mapred.job.tracker</name>
    <value>cluster-master:9001</value>
</property>
<property>
  <name>mapreduce.jobtracker.http.address</name>
  <value>cluster-master:50030</value>
</property>
<property>
  <name>mapreduce.jobhisotry.address</name>
  <value>cluster-master:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>cluster-master:19888</value>
</property>
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>/jobhistory/done</value>
</property>
<property>
  <name>mapreduce.intermediate-done-dir</name>
  <value>/jobhisotry/done_intermediate</value>
</property>
<property>
  <name>mapreduce.job.ubertask.enable</name>
  <value>true</value>
</property>
</configuration>

図4に示すように、糸のsite.xml

<configuration>
    <property>
   <name>yarn.resourcemanager.hostname</name>
   <value>cluster-master</value>
 </property>
 <property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
 </property>
 <property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>
 <property>
   <name>yarn.resourcemanager.address</name>
   <value>cluster-master:18040</value>
 </property>
<property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>cluster-master:18030</value>
 </property>
 <property>
   <name>yarn.resourcemanager.resource-tracker.address</name>
   <value>cluster-master:18025</value>
 </property> <property>
   <name>yarn.resourcemanager.admin.address</name>
   <value>cluster-master:18141</value>
 </property>
<property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>cluster-master:18088</value>
 </property>
<property>
   <name>yarn.log-aggregation-enable</name>
   <value>true</value>
 </property>
<property>
   <name>yarn.log-aggregation.retain-seconds</name>
   <value>86400</value>
 </property>
<property>
   <name>yarn.log-aggregation.retain-check-interval-seconds</name>
   <value>86400</value>
 </property>
<property>
   <name>yarn.nodemanager.remote-app-log-dir</name>
   <value>/tmp/logs</value>
 </property>
<property>
   <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
   <value>logs</value>
 </property>
</configuration>

包装のHadoopは奴隷に配布します

tar -cvf hadoop-dis.tar hadoop hadoop-3.2.0

ホストをスレーブにansible・プレイブックの配布の.bashrcとHadoopの-dis.tarを使用します

---
- hosts: cluster
  tasks:
    - name: copy .bashrc to slaves
      copy: src=~/.bashrc dest=~/
      notify:
        - exec source
    - name: copy hadoop-dis.tar to slaves
      unarchive: src=/opt/hadoop-dis.tar dest=/opt

  handlers:
    - name: exec source
      shell: source ~/.bashrc

上記のYAMLは、Hadoopの-dis.yamlとして保存、および実行します

ansible-playbook hadoop-dis.yaml

自動的にスレーブホスト/ optディレクトリを抽出するためのHadoop-dis.tarの下で

Hadoopの起動

フォーマット名前ノード

hadoop namenode -format

あなたは単語のストレージフォーマットの成功などが表示された場合、成功裏にフォーマットすることができます

クラスタを起動

cd $HADOOP_HOME/sbin
start-all.sh

あなたが使用を開始した後、JPSは正常に起動かどうかを確認するためのコマンド

注意:
遭遇したデータノードのサービスがノードの奴隷に起動しない、スレーブは実際に見つかったディレクトリ構造を表示
コア-site.xml内次のようなプロファイルフォルダの設定でファイルを生成していないが、

<property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>

HDFS-site.xmlファイル:

<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoop/tmp/dfs/name</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoop/data</value>
 </property>

手動でノードにこれらのフォルダを生成し、$ HADOOP_HOMEの下でこれらのフォルダやファイルにマスターを削除すると、フォルダを記録し、その後、名前ノードを再フォーマット

hadoop namenode -format

再度、クラスタサービスを開始します。

start-all.sh

その後、サービス内のノードが表示されるはずのノードから観察します

認証サービス

アクセス

http://host:18088
http://host:9870

サービスが開始されているかどうかを確認するには

転載します。https://www.jianshu.com/p/d7fa21504784

おすすめ

転載: www.cnblogs.com/coolwxb/p/10975352.html