본문 바로가기

HDFS

HDFS Cluster 설정

1. Hadoop 파일 복사 디렉터리 구성

 

cluster 구성 위해 master 뿐 아니라 worker node에 hadoop 파일 복사 및 설정 필요

 

- master : bigpi1

- worker node : bigpi2, bigpi3, bigpi4

 

 

clutser 내의 다른 서버에 관련 디렉터리 생성 및 권한 설정

 

$ cluster_run sudo mkdir –p /opt/hadoop_tmp/hdfs
$ cluster_run sudo chown pi:pi –R /opt/hadoop_tmp
$ cluster_run sudo mkdir –p /opt/hadoop
$ cluster_run sudo chown pi:pi –R /opt/hadoop

 

 

bigpi1에서 /opt/hadoop 내의 모든 파일들을 다른 서버에 복사

 

$ for x in $(others); do rsync -avxP $HADOOP_HOME $x:/opt; done

 

 

bigpi1의 .bashrc 파일을 다른 서버에 전달한 후 전체 reboot

 

$ cluster_scp ~/.bashrc

$ cluster_reboot

 

 

각각의 서버에서 hadoop version 확인

 

 

$ hadoop version

 

 

2. HDFS 설정 및 실행

 

/opt/hadoop/etc/hadoop 디렉터리 하위에 설정 파일들 수정

[core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml]

 

 

core-site.xml 파일 수정

 

$ sudo nano /opt/hadoop/etc/hadoop/core-site.xml

 

 

<configuration>
	<property>
		<name>fs.default.name</name>
		<value>hdfs://bigpi1:9000</value>
	</property>
</configuration>

 

 

hdfs-site.xml 파일 수정

 

$ sudo nano /opt/hadoop/etc/hadoop/hdfs-site.xml

 

 

<cofiguration>
	<property>
    	<name>dfs.datanode.data.dir</name>
    	<value>/opt/hadoop_tmp/hdfs/datanode</value>
    </property>
    <property>
    	<name>dfs.namenode.name.dir</name>
        <value>/opt/hadoop_tmp/namenode</value>
    </property>
    <property>
    	<name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

 

 

mapred-site.xml 파일 수정

 

$ sudo nano /opt/hadoop/etc/hadoop/mapred-site.xml

 

 

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
# 아래 내용 추가
	<property>
		<name>yarn.app.mapreduce.am.resource.mb</name>
		<value>256</value>
	</property>
	<property>
		<name>mapreduce.map.memory.mb</name>
		<value>128</value>
	</property>
	<property>
		<name>mapreduce.reduce.memory.mb</name>
		<value>128</value>
	</property>
</configuration>

 

 

yarn-site.xml 파일 수정

 

$ sudo nano /opt/hadoop/etc/hadoop/yarn-site.xml

 

 

<configuration>

# 여기부터
	<property>
		<name>yarn.acl.enable</name>
		<value>0</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>bigpi1</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>

 

 

 

# 맨 하단에 추가
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>900</value>
	</property>
	<property>
		<name>yarn.scheduler.maximum-allocation-mb</name>
		<value>900</value>
	</property>
	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value>64</value>
	</property>
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
	</property>
</configuration>

 

 

다른 서버에 모든 설정 파일 복사

 

 

$ cluster_scp /opt/hadoop/etc/hadoop/core-site.xml

$ cluster_scp /opt/hadoop/etc/hadoop/hdfs-site.xml

$ cluster_scp /opt/hadoop/etc/hadoop/mapred-site.xml

$ cluster_scp /opt/hadoop/etc/hadoop/yarn-site.xml

 

 

기존 datanode와 namenode 디렉터리 하위 모든 파일 삭제

 

$ cluster_run rm -rf /opt/hadoop_tmp/hdfs/datanode/*

$ cluster_run rm -rf /opt/hadoop_tmp/hdfs/namenode/*

 

 

/opt/hadoop/etc/hadoop/ 디렉터리 하위에 master 파일 생성

 

$ nano /opt/hadoop/etc/hadoop/master

 

 

bigpi1 추가

 

 

/opt/hadoop/etc/hadoop/ 디렉터리 하위에 workers 파일 수정

 

$ nano /opt/hadoop/etc/hadoop/workers

 

 

 

master 와 workers 파일 전체 서버에 복사

 

 

$ cluster_scp /opt/hadoop/etc/hadoop/master

$ cluster_scp /opt/hadoop/etc/hadoop/workers

 

 

/etc/hosts 파일 수정

 

 

127.0.1.1  bigpi1 줄 삭제

 

 

/etc/hosts 파일 전체 서버에 복사 후 cluster 전체 reboot

 

 

$ cluster_scp /etc/hosts

$ cluster_reboot

 

 

bigpi1에서 HDFS 포맷 후 HDFS 서비스 시작 후 실행 중인 JAVA 가상 머신 확인

 

 

$ hdfs namenode -format -force

$ start-dfs.sh && start-yarn.sh

$ jps

 

bigpi1에서는 ResourceManager, NameNode, SecondaryNameNode, Jps 실행 중

 

 

bigpi2에서는 DataNode, NodeManager, Jps 실행 중

 

 

bigpi1에서 HDFS에 파일 저장 후 bigpi2에서 확인하기

 

 

pi@bigpi1:~$ hadoop fs -put $ HADOOP_HOME/README.txt /

 

 

pi@bigpi2:~$ hadoop fs -ls /

 

bigpi1에서 저장된 걸 bigpi2 에서 확인 가능

 

 

3. Spark 설정 및 실행

 

 

bigpi1에서 .bashrc 파일에 환경변수 추가

 

 

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH

 

 

spark 설정 파일 작성

 

 

$ cd $SPARK_HOME/conf

$ sudo cp spark-defaults.conf.template spark-defaults.conf

$ sudo nano spark-defaults.conf

 

 

spark.master 	yarn
spark.driver.memory 465m
spark.yarn.am.memory 356m
spark.executor.memory 465m
spark.executor.cores 4

 

 

.bashrc 파일 적용 후 HDFS 재시작

 

$ cd ~

$ source .bashrc

$ stop-dfs.sh && stop-yarn.sh

$ start-dfs.sh && start-yarn.sh

 

 

$SPARK_HOME/examples/jars 디렉터리 하위 예제파일 확인 후 sparkpi 예제 실행

 

 

$ cd $SPARK_HOME/examples/jars

$ ls

$ spark-submit --deploy-mode client --class 
org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.2.0.jar

 

Pi 근사값이 나온 것을 알 수 있다.

 

 

.bashrc 파일 내의 cluster_reboot, cluster_shutdown 함수 수정 및 서버 배포

 

$ cd

$ nano .bashrc

 

 

stop-yarn.sh && stop-dfs.sh &&

 

cluster_reboot 함수와 cluster_shutdown 함수 내부에 해당 내용을 맨 앞에 추가

 

 

수정된 .bashrc 파일 전체 서버에 배포하고 적용

 

 

$ cluster_scp ~/.bashrc

$ source .bashrc

$ cluster_reboot

 

HDSF 서비스가 먼저 종료함

'HDFS' 카테고리의 다른 글

Sqoop  (0) 2021.12.22
Apache Flume  (0) 2021.12.22
Single Node 설정  (2) 2021.12.20
Cluster 설정  (0) 2021.12.16
가상환경 설치(virtual hadoop cluster 구성)  (0) 2021.12.16