하둡 기록 -Apache의 하둡 + 스파크 클러스터 구축

하둡 + 스파크 클러스터 배포 가이드

(다중 노드 문서 배포, 제안 된 클러스터 소금 / ansible의 운영)

1. 클러스터 계획
호스트 운영 시스템 이름의 노드 이름 IP 주소
마스터 centos1의 192.168.0.1에 CentOS 7.2
SLAVE1의 centos2의 192.168.0.2에 CentOS 7.2
Slave2 centos2에 192.168.0.3를 CentOS 7.2
2. 기본 환경 구성
2.1 호스트 이름 구성
1) 호스트 이름 수정
192.168.0.1의를 루트 사용자 수행 :
hostnamectl SET-호스트 이름 centos1는
루트 사용자 192.168.0.2 수행 :
hostnamectl SET-호스트 이름 centos2는
루트 사용자 192.168.0.3 수행 :
hostnamectl 호스트 이름 centos3 SET-
2하는) 맵핑 호스팅 첨가
대상 서버를 (192.168.0.1 192.168.0.2 192.168.0.3)는 루트 사용자를 수행
빔을 / etc / 호스트
192.168.0.1 centos1
192.168.0.2 centos2
192.168.0.3 centos3을

2.2 닫기 SELinux를
대상 서버에 루트 사용자로 실행 (192.168.0.1 192.168.0.2 192.168.0.3) :
Sed의 -i '/^SELINUX/s/=.*/=disabled/'을 / etc / SELinux가 / 설정
위해 setenforce 0
2.3 검토 열린 파일의 리눅스 최대 수는
대상 서버에서 (192.168.0.1 192.168.0.2 192.168.0.3) 루트 사용자를 수행 :
정력는 /etc/security/limits.conf
* 소프트 NOFILE의 65536
* 하드 NOFILE 65536
방화벽 해제 2.4 회전
대상 서버 (192.168에. 0.1 192.168.0.2 192.168.0.3) 루트 사용자 수행
systemctl 비활성화 firewalld.service
systemctl 정지 firewalld.service
systemctl 상태 firewalld.service
2.5 초기화 서버
1) 서버 초기화
대상 서버를 (192.168.0.1 192.168.0.2 192.168.0.1 192.168.0.3 ) 루트 사용자의 구현은
-g 6000 하둡 groupadd
은 useradd -s / 빈 / bash는 -m -G 하둡 하둡
의 passwd 하둡을
-p MKDIR은 / usr / 애플리케이션 / JDK
대한 Chown -R 및 LT 하둡 : 하둡은 / usr / 애플리케이션
2) sudo를 배치
(192.168.0.1 192.168.0.2 192.168.0.3) 대상 서버의 루트 사용자를 수행
빔 /etc/sudoers.d/hadoop
ALL = 하둡 (ALL) ALL
하둡 ALL = (ALL)에 NOPASSWD : ALL
! env_reset 기본
. 3) 접착 로그 SSH없이 배치
192.168.0.1 192.168.0.2 192.168.0.3 하둡 사용자 수행
SU 하둡
SSH Keygen은 RSA에 -t
2) 파일 병합 id_rsa_pub는
192.168.0.1 하둡 사용자 수행
/home/hadoop/.ssh/authorized_keys CAT ~ / 스푸핑 / id_rsa.pub >>
chmod를 600 ~ / 스푸핑 /를가 authorized_keys
SCP ~ / 스푸핑 / authorized_keys에은을 [email protected]. 0.2 : /home/hadoop/.ssh
비밀번호 : 하둡
192.168.0.2의 하둡 사용자에서 수행
고양이 ~ / 스푸핑 / id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
SCP ~ / 스푸핑 / authorized_keys에 [email protected] : /home/hadoop/.ssh
비밀번호 : 하둡
192.168.0.3 하둡 사용자에서 수행
고양이 ~ / 스푸핑 / id_rsa.pub >> /home/hadoop/.ssh / authorized_keys에
SCP ~ / 스푸핑 / authorized_keys에의 [email protected] : /home/hadoop/.ssh
SCP ~ / 스푸핑 / authorized_keys에 [email protected] : /home/hadoop/.ssh의
이전 파일 덮어 쓰기
암호 : 하둡
3) 192.168.0.1 192.168.0.2 192.168.0.3 하둡 사용자에서 수행
SSH의 [email protected]
SSH의 [email protected]
SSH의 [email protected]
3. 패키지 준비
서버에 패키지를 업로드 #
JDK-8u192 x64.tar.gz - 리눅스
하둡-2.8.5.tar.gz
스칼라 - 2.11.12.tar.gz의
불꽃 - 2.4.1 - 빈 - hadoop2.7.tar.gz
사육사-3.4.5.tar.gz
#의 압축 해제
하둡-2.8.5.tar.gz xvf와 타르는 -C는 / usr / 응용 프로그램
타르 xvf와의 스칼라 - 2.11.12.tar.gz -C는 / usr / 응용 프로그램
타르는 불꽃 2.4.1 - 빈 - hadoop2.7.tar을 xvf와. GZ -C / USR / 앱
사육사-3.4.5.tar.gz -C / USR / 앱 xvf와 타르
타르 xvf와 JDK-8u192-리눅스 x64.tar.gz -C / USR / 애플리케이션 / JDK
MV 하둡 2.8. 5 하둡
조작량 스칼라 2.11.12 스칼라
MV 스파크 2.4.1 단 - hadoop2.7 스파크
MV-3.4.5 사육사 사육사
#配置은 / etc / 프로필
= / USR / 애플리케이션 / JDK / jdk1.8.0_192 수출 JAVA_HOME
수출 PATH = $ JAVA_HOME / 빈 : $ PATH에의
수출 HADOOP_HOME =는 / usr / 응용 프로그램 / 하둡
수출 PATH = $의 PATH : $ HADOOP_HOME / 빈 : $ HADOOP_HOME / sbin에의
수출 SPARK_HOME =는 / usr / 응용 프로그램 / 스파크
수출 PATH = $ SPARK_HOME / 빈 : $ PATH
4.Zookeeper集群部署
# 192.168.0.1 192.168.0.2 192.168.0.3 하둡 사용자에 수행 된
CD / USR / 애플리케이션 / 사육사 / 회의 '
CAT >> <<을 EOF zoo.cfg
tickTime를 = 2,000
initLimit = 10
syncLimit =. 5
DATADIR = / USR / 애플리케이션 / 사육사 / 데이터 / 사육사
dataLogDir = / USR / 애플리케이션 / 사육사 / 기록
을 clientPort = 2,181
maxClientCnxns = 1000
server.1 = 192.168.0.1:2888:3888
server.2 = 192.168.0.2:2888:3888
server.3 = 192.168.0.3 : 2888 : 3888
EOF의
#MASTER 노드 기입 한 슬레이브 노드 등
에코 >> 1은 / usr / 애플리케이션 / 사육사 / 데이터 / 사육사 / 대한 myid
# 시작
nohup을 시작 및 /usr/app/zookeeper/bin/zkServer.sh
5.Hadoop 클러스터 배포
#는 192.168.0.1 192.168.0.2 192.168.0.3 하둡 사용자에 수행
CD는 / usr / 응용 프로그램 / 하둡 / 등 / 하둡
hadoop-env.sh에서, yarn-env.sh
추가 : 수출 JAVA_HOME =은 / usr / 응용 프로그램 / JDK / jdk1.8.0_192
를 / usr / 응용 프로그램 / 하둡 / 등등 IP 호스트 이름, 디렉토리 등 실제 상황의 수정 / 하둡 디렉토리 아래.

코어 sit.xml

<구성>
    <특성>
        <이름> hadoop.tmp.dir </ 이름>
        <값>는 / usr / 응용 프로그램 / 하둡 / tmp를 </ 값>
    </ 속성>
    <특성>
        <이름> fs.default.name </ 이름>
        <값> HDFS : // MyCluster라는 </ 값>
    </ 속성>
    <특성>
        <이름> io.compression.codecs </ 이름>
        <값> org.apache.hadoop.io.compress.GzipCodec,
            org.apache.hadoop.io.compress.DefaultCodec,
            org.apache.hadoop.io.compress.BZip2Codec,
            org.apache.hadoop.io.compress.SnappyCodec
        </ 값>
    </ 속성>
    <특성>
        <이름> hadoop.proxyuser.root.hosts </ 이름>
        <값> * </ 값>
    </ 속성>
    <특성>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>192.168.0.1:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>192.168.0.1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>192.168.0.2:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>192.168.0.2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://192.168.0.1:8485;192.168.0.2:8485;192.168.0.3:8485/mycluster</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/app/hadoop/data/journaldata</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/app/hadoop/data/dfs/nn/local</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/app/hadoop/data/dfs/dn/local</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadodp/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>10000</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

mapred-site.xml 

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

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>rmCluster</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>192.168.0.1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>192.168.0.2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181</value>
    </property>
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.store.class</name>   
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</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.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>

    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>20480</value>
    </property>
    <property>
        <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
        <value>97.0</value>
    </property>
</configuration>


#新建目录
mkdir –p /usr/app/Hadoop/tmp
mkdir –p /usr/app/Hadoop/data/dfs/nn/local
mkdir –p /usr/app/Hadoop/data/dfs/nn/local
#启动
在192.168.0.1 192.168.0.2 192.168.0.3 hadoop用户下执行
hadoop-daemon.sh start journalnode
在192.168.0.1 hadoop用户下执行
hdfs namenode –format
hadoop-daemon.sh start namenode
在192.168.0.2 hadoop用户下操作
hdfs namenode –bootstrapStandby
在192.168.0.1 hadoop用户下执行
hdfs zkfc –formatZK
在192.168.0.2 hadoop用户下操作
hadoop-daemon.sh start namenode
在192.168.0.1 192.168.0.2 hadoop用户下操作
hadoop-daemon.sh start zkfc
在192.168.0.1 192.168.0.2 hadoop用户下操作
yarn-daemon.sh start resourcemanager
在192.168.0.1 192.168.0.2 192.168.0.3 hadoop用户下操作
yarn-daemon.sh start nodemanager
在192.168.0.1 192.168.0.2 192.168.0.3 hadoop用户下操作
hadoop-daemon.sh start datanode
#验证
http://192.168.0.1:50070查看hadoop状态
http://192.168.0.1:8088查看yarn集群状态
6.Spark集群部署
#在192.168.0.1 192.168.0.2 192.168.0.3 hadoop用户下执行
cd /usr/app/spark/conf
在spark-env.sh加入
export JAVA_HOME=/usr/app/jdk/jdk1.8.0_192
export SCALA_HOME=/usr/app/scala
export HADOOP_HOME=/usr/app/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://cpu-cluster/tmp/spark/event"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HADOOP_HOME}/lib/native
在slaves加入192.168.0.2 192.168.0.3
#启动
/usr/app/spark/sbin/start-all.sh
#验证
/usr/app/spark/bin/spark-shell --master yarn --deploy-mode client

추천

출처www.cnblogs.com/xinfang520/p/11691332.html