고 가용성 구축 하둡

HA 클러스터 구조는 완전히 분산 기준에 구축 할 수 있습니다

목적 :

단일 장애 지점의 발생을 감소

계획 구성도

NN1 NN2 DN ZK ZKFC JNN RM
hadoop100 * * * * * *
hadoop101 * * * * * *
hadoop102 * * *

.도 NN, DN, ZK, ZKFC, JNN, RM은 이하된다
NN : 네임 노드
DN에 DataNode에서
ZK : 사육사
ZKFC : 사육사 클라이언트
JNN : Journalnode
RM : ResourceManager에

준비:
1, 구성 시간 동기화 서버 (선택 사항)
모든 노드는 수행

yum  -y  install ntp
ntpdate ntp1.aliyun.com

2, 각 호스트의 매핑을 구성 (자신의 바이두를 해결하기 위해 모른다)

3, 피할 가까이 로그인
모든 노드는 수행

ssh-keygen-t rsa   //生成密钥  中途停下询问的一直按回车到执行成功为止
ssh-copy-id hadoop101 //发送公钥到其他节点上

4, 방화벽 설정을 해제

systemctl stop firewalld.service //暂时关闭
systemctl disable firewalld.service //永久关闭

고 가용성 하둡 클러스터를 구축 시작

JDK 설치 (이 좋은 압축을 직접 설치되지 않은 최소 설치 CentOS의 기본 JDK의 경우, 그래픽 설치 설치 원본 JDK를 설치 제거해야 함)

설치 패키지 하둡을 추출

tar xf hadoop2.7.7... -C /module/ha/

디렉토리에 하둡 설정 파일

cd /module/ha/hadoop/etc/hadoop

세 (하둡, 원사, mapred) -env.sh 파일은 JAVA_HOME 세트 JDK 설치 경로를 찾을 수
그림 삽입 설명 여기

배치 core-site.xml

vi core-site.xml
<!-- 设置hdfs的nameservice服务 名称自定义 -->
  <property>
     <name>fs.defaultFS</name>
     <value>hdfs://mycluster</value>
  </property>

<!-- 设置hadoop的元数据存放路径 -->
  <property>
     <name>hadoop.tmp.dir</name>
     <value>/moudle/ha/hadoop/data</value>
  </property>
  
<!-- 指定zookeeper地址 -->
  <property>
     <name>ha.zookeeper.quorum</name>
     <value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
  </property>

VI HDFS-site.xml 파일

	<!-- 完全分布式集群名称 -->
	<property>
		<name>dfs.nameservices</name>
		<value>mycluster</value>
	</property>

	<!-- 集群中NameNode节点都有哪些 -->
	<property>
		<name>dfs.ha.namenodes.mycluster</name>
		<value>nn1,nn2</value>
	</property>

	<!-- nn1的RPC通信地址 -->
	<property>
		<name>dfs.namenode.rpc-address.mycluster.nn1</name>
		<value>hadoop100:9000</value>
	</property>

	<!-- nn2的RPC通信地址 -->
	<property>
		<name>dfs.namenode.rpc-address.mycluster.nn2</name>
		<value>hadoop101:9000</value>
	</property>

	<!-- nn1的http通信地址 -->
	<property>
		<name>dfs.namenode.http-address.mycluster.nn1</name>
		<value>hadoop100:50070</value>
	</property>

	<!-- nn2的http通信地址 -->
	<property>
		<name>dfs.namenode.http-address.mycluster.nn2</name>
		<value>hadoop101:50070</value>
	</property>

	<!-- 指定NameNode元数据在JournalNode上的存放位置 -->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://hadoop100:8485;hadoop101:8485;hadoop102:8485/mycluster</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>

	<!-- 声明journalnode服务器存储目录-->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/module/ha/hadoop/data/jn</value>
	</property>

	<!-- 关闭权限检查-->
	<property>
		<name>dfs.permissions.enable</name>
		<value>false</value>
	</property>

	<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
	<property>
  		<name>dfs.client.failover.proxy.provider.mycluster</name>
	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
    <!--设置开启HA故障自动转移-->
    <property>
	    <name>dfs.ha.automatic-failover.enabled</name>
	    <value>true</value>
    </property>

배치 mapred-site.xml

vi mapred-site.xml

다음과 같은 구성을 추가

<!-- 指定mr框架为yarn方式 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

구성 원사를 site.xml (선택 사항)

vi yarn-site.xml

다음과 같은 구성을 추가

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!--启用resourcemanager ha-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
 
    <!--声明两台resourcemanager的地址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster-yarn1</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hadoop100</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hadoop101</value>
    </property>
 
    <!--指定zookeeper集群的地址--> 
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
    </property>

    <!--启用自动恢复--> 
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
 
    <!--指定resourcemanager的状态信息存储在zookeeper集群--> 
    <property>
        <name>yarn.resourcemanager.store.class</name>               <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>

구성 노예

vi slaves
hadoop100
hadoop101
hadoop102

구성은 모든 노드에 배포 완료

scp –r -p /usr/local/hadoop/ root@master2:/usr/local/

사육사 설치

파일 압축 풀기

tar xf 文件名  -C 存放路径

좋은 자기 구성 환경 변수

수정 conf 디렉토리 아래에 zoo_sample.cfg

mv  zoo_sample.cfg  zoo.cfg
vi  zoo.cfg

경로 설정 ZK에 저장된 메타 데이터를 저장

dataDir=/module/zookeeper/zk  

파일의 맨 아래에 다음과 같은 데이터를 추가

Server.1=hadoop100:2888:3888
Server.2=hadoop101:2888:3888
Server.3=hadoop102:2888:3888

수정 사육사의 위치 로그를 생성수정할 수 없습니다

vi bin/zkEnv.sh

그림 삽입 설명 여기
수정경로에 두 번째 가리키는 화살표가게에 자신의 희망을하려면

ZK의 저장 경로에 저장된 파일의 메타 데이터를 생성

mkdir  /module/zookeeper/zk

모든 노드에 사육사 사육사 구성 파일을 배포
ID에 해당하는 서로 다른 노드로 작성

echo  1 > /module/zookeeper/zk/myid   # hadoop100节点上:

클러스터의 각 노드에서 사육사는 시작 스크립트 사육사의 서비스를 수행

zkServer.sh start 

배포 세부 사항
1, 당신은 journalnode를 시작해야합니다

hadoop-daemons.sh start journalnode

상기 선택은 하둡 노드 NN의 테이블 포맷을 수행하도록 구성되는 것을 특징으로하는 2,

bin/hdfs namenode –format

NN 시작 네임 노드를 선택합니다

sbin/hadoop-daemon.sh start namenode

(4) 데이터 동기화가 다른 노드에서 수행 NN

bin/hdfs namenode -bootstrapStandby

(5), NN에 상기 서식 수행 zkfc

bin/hdfs zkfc –formatZK

하는 NN은 하둡 클러스터를 시작

sbin/start-dfs.sh

보기에 사용 JPS 명령각각의노드는 노드 다음 거기
그림 삽입 설명 여기
는 HA 클러스터 하둡 전체의 포인트! ! ! !

RM은 HA에 배치되어 개방된다 RM 노드를 수행

sbin/start-yarn.sh

다른 구성도 노드 RM에서 수행

sbin/yarn-daemon.sh start resourcemanager

모든 노드가 지금까지 성공적으로 HA 클러스터 구성 RM의 다음 노드를 참조하십시오! ! ! ! ! !
그림 삽입 설명 여기

자주 사용하는 명령의 네임 노드 프로세스 시작 : hadoop-daemon.sh 시작 네임 노드
데이터 노드 프로세스 시작 : hadoop-daemon.sh 시작 데이터 노드

HA 고 가용성 환경, 당신은 프로세스를 시작해야합니다 사육사 : zkServer.sh 시작 zkServer.sh 정지 시작 정지
zkServer.sh 상태를 리더 follwer의 상태를 볼 수

journalnode 클러스터 명령 hadoop-daemon.sh 시작 journalnode는 hadoop-daemon.sh 시작
STOP 정지 journalnode을

ZKFC 형식 : HDFS zkfc -formatZK zkfc 프로세스를 시작 : hadoop-daemon.sh 시작 zkfc
정지 zkfc 프로세스를 : hadoop-daemon.sh 정지 zkfc

네임 노드 데이터 동기화 이름 : HDFS 네임 노드 -bootstrapStandby

원사의 프로세스를 시작합니다 :

yarn-daemon.sh ResourceManager에 시작

아날로그 자동 장애 복구 대기 상태 NN 전환

  1. 사용 JPS보기 네임 노드의 프로세스 ID
jps
  1. 정지 네임 노드 과정
 kill -9 namenode的进程id

그런 다음 두 개의 네임 노드 웹 페이지를 통해 전환의 상태를 볼 수 있는지 여부를 확인
3. 다시 시작 네임 노드 프로세스를 :

  hadoop-daemon.sh start namenode
게시 39 개 원래 기사 · 원의 찬양 (13) · 전망 2314

추천

출처blog.csdn.net/qq_43205282/article/details/103433702