하둡 클러스터 설치에 고정 표시기

텐센트 클라우드 호스트를 사용하여 고정 표시기 클러스터 테스트 환경을 구축 할 수 있습니다.

환경

1 오퍼레이팅 시스템 : 7.2 CentOS는 64 비트

네트워크 설정

호스트 이름 IP
클러스터 마스터 172.18.0.2
클러스터 SLAVE1 172.18.0.3
클러스터 slave2 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는
둥근 모든 방법, 완료 ~ / 스푸핑 디렉토리 후 생성이 id_rsa_gsg_keypair를 (개인 키 파일) 및 디렉토리 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 루트 @ 클러스터-SLAVE1) 후

Ansible 설치

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

이 시점에서 우리는 ansible 호스트 파일을 편집로 이동

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 환경 변수 및 구성 하둡

편집 ~/.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

하둡 구성은 구성 파일을 실행하는 데 필요한

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>

포장 하둡은 노예들에게 배포

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

호스트 슬레이브 ansible - 각본 배포 .bashrc에 하둡 - 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은 하둡 - dis.yaml로 저장하고 수행

ansible-playbook hadoop-dis.yaml

하둡 - dis.tar에서 자동으로 슬레이브 호스트 / opt 디렉토리를 추출

하둡 시작

포맷 네임 노드

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