본문 바로가기
App Programming/Hadoop

[Hadoop] 하둡 설정

by goatlab 2024. 6. 21.
728x90
반응형
SMALL

hadoop-env.sh

 

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# Java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

# Hadoop
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="${HADOOP_OPTS} -Djava.library.path=$HADOOP_HOME/lib/native"

# For PID
# hadoop-USER-datanode.pid (DataNode)
# hadoop-USER-journalnode.pid (JournalNode)
# hadoop-USER-namenode.pid (NameNode)
# hadoop-USER-zkfc.pid (DFSZKFailoverController)
export HADOOP_PID_DIR=${HADOOP_HOME}/pids
export HADOOP_SECURE_PID_DIR=${HADOOP_PID_DIR}
hadoop-USER-datanode.pid DataNode 프로세스의 PID를 저장하는 파일 이름
hadoop-USER-journalnode.pid JournalNode 프로세스의 PID를 저장하는 파일 이름
hadoop-USER-namenode.pid NameNode 프로세스의 PID를 저장하는 파일 이름
hadoop-USER-zkfc.pid DFSZKFailoverController 프로세스의 PID를 저장하는 파일 이름
export HADOOP_PID_DIR=${HADOOP_HOME}/pids HADOOP_PID_DIR 변수는 Hadoop PID 파일들이 저장될 디렉토리를 지정한다. 이 설정에서는 HADOOP_HOME 환경 변수에 설정된 Hadoop 설치 디렉토리 내의 pids 디렉토리를 사용한다.
export HADOOP_SECURE_PID_DIR=${HADOOP_PID_DIR} HADOOP_SECURE_PID_DIR 변수는 보안 모드에서 Hadoop PID 파일들이 저장될 디렉토리를 지정한다. 이 설정에서는 `HADOOP_PID_DIR`과 동일한 디렉토리를 사용하도록 설정되어 있다.

 

여기서, USER는 실제 사용자 이름으로 대체된다.

 

hdfs-site.xml

 

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>

    <!-- configuration hadoop -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/data/dfs/journalnode</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>my-hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.my-hadoop-cluster</name>
        <value>namenode1,namenode2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.my-hadoop-cluster.namenode1</name>
        <value>master1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.my-hadoop-cluster.namenode2</name>
        <value>master2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.my-hadoop-cluster.namenode1</name>
        <value>master1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.my-hadoop-cluster.namenode2</name>
        <value>master2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master1:8485;master2:8485;master3:8485/my-hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.my-hadoop-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>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <property> 
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/data/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/data/data</value>
    </property>

    <!-- WebHDFS -->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
		    <name>dfs.namenode.http-address</name>
		    <value>0.0.0.0:50070</value>
    </property>

</configuration>

 

 

core-site.xml

 

vim $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://master1:9000</value>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://my-hadoop-cluster</value>
        </property>
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>master1:2181,master2:2181,master3:2181</value>
        </property>
        
        <!-- Trash config -->
        <property>
                 <name>fs.trash.interval</name>
                 <value>1440</value>
        </property>
        <property>
                  <name>fs.trash.checkpoint.interval</name>
                  <value>120</value>
        </property>
</configuration>

 

core-site.xml

 

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
  <!-- Site specific YARN configuration properties -->
  <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.vmem-check-enabled</name>
    <value>false</value>
  </property>

	<!-- for Resource Manager HA configuration -->
	<property>
		<name>yarn.resourcemanager.ha.enabled</name>
		<value>true</value>
	</property>
	<property>
		<name>yarn.resourcemanager.cluster-id</name>
		<value>yarn-cluster</value>
	</property>
	<property>
		<name>yarn.resourcemanager.ha.rm-ids</name>
		<value>rm1,rm2</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname.rm1</name>
		<value>master1</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname.rm2</name>
		<value>master2</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address.rm1</name>
		<value>master1:8088</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address.rm2</name>
		<value>master2:8088</value>
	</property>
	<property>
		<name>hadoop.zk.address</name>
		<value>master1:2181,master2:2181,master3:2181</value>
	</property>
</configuration>

 

 

 

core-site.xml

 

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
</configuration>
mapreduce.framework.name MapReduce 프레임워크를 YARN으로 지정
yarn.app.mapreduce.am.env MapReduce Application Master의 환경 변수를 설정
mapreduce.map.env Map 태스크의 환경 변수를 설정
mapreduce.reduce.env Reduce 태스크의 환경 변수를 설정

 

이 설정 파일은 YARN 위에서 MapReduce 작업을 실행할 때 필요한 환경 설정을 정의한다.

 

PID 설정

 

프로세스의 ID 값인 pid를 저장할 디렉토리 생성한다.

 

mkdir -p ${HADOOP_HOME}/pids

 

workers 설정

 

Hadoop의 워커 노드 리스트 파일인 workers 파일을 편집한다.

 

vim $HADOOP_HOME/etc/hadoop/workers
slave1
slave2
slave3

 

masters 설정

 

Hadoop의 마스터 노드 리스트 파일인 masters 파일을 편집한다.

 

vim $HADOOP_HOME/etc/hadoop/masters
master1
master2
master3
728x90
반응형
LIST