2022년 JDK 8 기준으로 잡아 둔 설정 백업이다. 현행 설치는 Single namenode · HA namenode 를 본다.
export HADOOP_HOME=/home/hadoop
#Hadoop Binary 가 존재하는 경로. 일반적으로 hadoop 계정의 home 디렉토리
export JAVA_HOME=/home/jdk1.8.0_191
#JDK 경로.
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin
export PATH
$HADOOP_HOME/etc/
또는 $HADDOOP/etc/hadoop/
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdfs01.encore.rnd:8020</value>
<!-- 기본 HDFS 주소. 예를 들어 "hdfs dfs -ls / " 를 수행하면 / 앞에 value의 주소가 들어간다고 이해하면 된다 -->
</property>
<property>
<name>hadoop.proxyuser.hive.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hive.hosts</name>
<value>*</value>
</property>
</configuration>
$HADOOP_HOME/etc/
또는 $HADDOOP/etc/hadoop/
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<property>
<name>dfs.replication</name>
<value>3</value>
<!-- 데이터 복제 횟수 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hdfs/namenode</value>
<!--로컬 디렉토리 경로이며, 반드시 hadoop을 구동하는 계정이 디렉토리에 대한 모든 권한을 가지고 있어야 한다.-->
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/home/hdfs/namesecondary</value>
<!--로컬 디렉토리 경로이며, 반드시 hadoop을 구동하는 계정이 디렉토리에 대한 모든 권한을 가지고 있어야 한다.-->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hdfs/datanode</value>
<!--로컬 디렉토리 경로이며, 반드시 hadoop을 구동하는 계정이 디렉토리에 대한 모든 권한을 가지고 있어야 한다.
datanode로 동작하는 클라이언트, 즉 workers 파일에 등록되어있는 호스트에 모두 동일하게 적용해야 한다.-->
</property>
<property>
<name>dfs.http.address</name>
<value>hdfs01.encore.rnd:50070</value>
<!--namenode http 주소 및 포트 -->
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hdfs01.encore.rnd:50090</value>
<!-- Secondary namenode http 주소 및 포트 -->
</property>
<property>
<name>dfs.block.size</name>
<value>16777216</value>
<!-- HDFS의 block size, Byte 단위.
8MB=8,388,608 / 16MB=16,777,216 / 32MB=33,554,432 / 64MB=67,108,864 / 128MB=134,217,728-->
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
<!-- 값이 false일 경우 파일 시스템의 퍼미션 관련 기능이 비활성화된다. -->
</property>
<property>
<name>fs.trash.interval</name>
<value>3</value>
<!-- value의 값(=분)에 따라 휴지통이 비워진다. -->
</property>
$HADOOP_HOME/etc/
또는 $HADDOOP/etc/hadoop/
export JAVA_HOME=/home/jdk1.8.0_191
#Java 홈 디렉토리 지정. java 바이너리가 path에 등록 되어있으면 실행에는 문제가 없은나
#예상치 못한 문제나, 경고 메시지 등이 발생한다.
export HADOOP_HOME=/home/hadoop
#Hadoop 홈 디렉토리.
export HADOOP_PREFIX=$HADOOP_HOME
#Hadoop prefix 디렉토리
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
#Hadoop 설정파일 경로 지정. 주석처리 되어있거나 값이 없으면 기본 값.
parallel Garbage Collection 을 위한 Valiables
ex) export HDFS_NAMENODE_OPTS="-XX:+UseParallelGC"
| Daemon | Environment Variable |
|---|---|
| NameNode | HADOOP_NAMENODE_OPTS |
| DataNode | HADOOP_DATANODE_OPTS |
| Secondary NameNode | HADOOP_SECONDARYNAMENODE_OPTS |
| ResourceManager | YARN_RESOURCEMANAGER_OPTS |
| NodeManager | YARN_NODEMANAGER_OPTS |
| WebAppProxy | YARN_PROXYSERVER_OPTS |
| Map Reduce Job History Server | HADOOP_JOB_HISTORYSERVER_OPTS |
$HADOOP_HOME/etc/hadoop/workers 파일에 datanode로 구동될 클라이언트 호스트를 기록한다.
hdfs01.encore.rnd
hdfs02.encore.rnd
hdfs03.encore.rnd
hdfs04.encore.rnd
FQDN이 아닌 호스트명을 등록하거나 (/etc/hosts에 등록되어있는 호스트) IP 주소를 등록해도 무방하다.
하지만 사용자가 해당 hadoop 노드에 접근 하여 작업할 때 hadoop에서 참조하고, 돌려주는 호스트들은 모두
workers 파일에 등록된 이름들이므로, 단순 host명보다는 IP 주소, IP 주소보다는 FQDN을 권장한다.
※ Slave, Worker 노드는 중앙에서 관리 되는 개념이 아님.
workers 파일에 datanode 들을 등록 한 경우 $HADOOP_HOME/sbin/start-all.sh 로 구동할 때 구동 된다.
위 1,2,3,4 항목의 내용을 모두 workers 에 등록된 노드에 동일하게 적용한다.
즉, 환경변수들을 각 노드에 맞게 등록하고 $HADOOP_HOME/etc/hadoop 아래 파일을 모두 동일하게 맞춰준다.
구동
[hadoop@hdfs01 sbin]$ ./start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [hdfs01.encore.rnd]
Starting datanodes
Starting secondary namenodes [hdfs02.encore.rnd]
Starting resourcemanager
Starting nodemanagers
[hadoop@hdfs01 sbin]$ ./start-yarn.sh
Starting resourcemanager
Starting nodemanagers
[hadoop@hdfs01 sbin]$ ./mr-jobhistory-daemon.sh start historyserver
종료
$HADOOP_HOME/sbin/stop-all.sh
| (이미지 없음: picture026-1.png) |
정상 구동 중인 HDFS 클러스터의 web UI