Hadoop 환경설정 파일 수정
필요한 설정 파일은 $HADOOP_HOME/etc/hadoop 디렉토리에 있으며, 다음과 같이 수정해야 한다.
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hdfs/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>node1,node2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.cluster.node1</name>
<value>node1:9001</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.cluster.node2</name>
<value>node2:9001</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.node1</name>
<value>node1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.node2</name>
<value>node2:9000</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.cluster</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>~/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485/cluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/install/hadoop-2.7.3/journal</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_281
集群启动 명령어
※ 주의: 최초启动와 일반적인启动의 명령어가 다르므로 순서에 유의해야 한다.
최초 시작 절차
1단계: 모든 노드에서 Zookeeper 시작
bin/zkServer.sh start
2단계: Zookeeper 초기화
node1 노드에서 Zookeeper를 초기화하여 필요한 znode 생성
bin/hdfs zkfc -formatZK
3단계: JournalNode 시작
모든 JournalNode 노드에서 다음 명령어로 JournalNode 실행
sbin/hadoop-daemon.sh start journalnode
4단계: JournalNode 초기화
node1 노드에서 shared edits 디렉토리 초기화
bin/hdfs namenode -initializeSharedEdits -force
node1 노드에서 NameNode 포맷
hdfs namenode -format
5단계: NameNode 시작
bin/hdfs namenode
6단계:standby NameNode 동기화
standby NameNode 노드에서 실행하여 메타데이터 복사
hdfs namenode -bootstrapStandby
7단계: 종료
동기화 완료 후 node1에서 NameNode 프로세스를 종료하고, 모든 JournalNode 중지
sbin/hadoop-daemon.sh stop journalnode
일반적인 시작/중지 명령어
sbin/start-all.sh
sbin/stop-all.sh
대체 시작 방법
1단계: Zookeeper 초기화
[root@node1 hadoop]$ bin/hdfs zkfc -formatZK
2단계: JournalNode 시작
sbin/hadoop-daemon.sh start journalnode
3단계: NameNode 및 JournalNode 디렉토리 포맷
hdfs namenode -format cluster
4단계: NameNode 시작
node1 (활성 NameNode)에서:
[root@node1 hadoop]$ sbin/hadoop-daemon.sh start namenode
node2 (대기 NameNode)에서:
[root@node2 hadoop]$ bin/hdfs namenode -bootstrapStandby
[root@node2 hadoop]$ sbin/hadoop-daemon.sh start namenode
5단계: DataNode 시작
[root@node1 hadoop]$ sbin/hadoop-daemons.sh start datanode
6단계: ZKFC 시작
node1 및 node2 각각에서:
[root@node1 hadoop]$ sbin/hadoop-daemon.sh start zkfc
[root@node2 hadoop]$ sbin/hadoop-daemon.sh start zkfc
7단계: JobHistoryServer 시작
[root@node1 hadoop]$ sbin/mr-jobhistory-daemon.sh start historyserver
※ 참고: standby NameNode에 문제가 발생하여 자동으로 사라진다면, name 및 data 디렉토리를 삭제한 후 시작 절차를 다시 수행하기 바랍니다.