하둡

하둡 설치(단일 노드)

왕크다 2023. 3. 29. 14:36

클러스터 환경을 구축하기 전에 하둡을 찍먹하기 위한 단일 환경 설정

 

1. 자바 설치

하둡은 자바가 설치된 유닉스/윈도우에서 실행된다.

https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions

 

HadoopJavaVersions - HADOOP2 - Apache Software Foundation

Hadoop Java Versions Version 2.7 and later of Apache Hadoop requires Java 7. It is built and tested on both OpenJDK and Oracle (HotSpot)'s JDK/JRE. Earlier versions (2.6 and earlier) support Java 6. Tested JDK Here are the known JDKs in use or which have b

cwiki.apache.org

여기서 운영체제, 하둡, 자바의 조합을 확인 후 설치


2. 하둡 설치

하둡 배포 페이지(https://hadoop.apache.org/releases.html)에서 바이너리 다운로드

홈 디렉터리는 NFS로 마운트 된 경우가 많아 비추천

cd /usr/local
wget /hadoop/download/link
sudo tar xzf hadoop-x.x.x.tar.gz

export HADOOP_HOME=/usr/local/hadoop-x.x.x.tar.gz
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'
cat output/*

+ hadoop/etc/hadoop-env.sh에도 JAVA_HOME 추가

 

3. 중요 하둡 데몬 속성 설정

etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

4. 로컬에서 MapReduce 실행

1) hdfs와 yarn 사용자 계정이 암호 없이 ssh 접속 허용하도록 설정

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
chmod 0600 ~/.ssh/authorized_keys

 

2) 최초 HDFS 실행시 파일시스템을 반드시 포맷해야 한다.

- 저장 디렉터리, 네임노드 초기 버전의 영속적인 데이터 구조 생성

bin/hdfs namenode -format

3) NameNode, DataNode 데몬 시작

sbin/start-dfs.sh

 

그런데 여기서 namenodes, datanodes, secondary namnodes 시작시 Permission denied 발생
-> sudo로 실행해도 안됨 (유저를 찾을 수 없다고 뜬다.)

->" ssh-copy-id user@localhost "로 공개키를 ssh 서버에 등록-> ssh user@localhost 로 패스워드 없이 접속되는지 확인
->다시 sbin/start-dfs.sh 를 했는데 "Unable to write in /usr/local/hadoop-3.3.5/logs" 에러 발생
->sudo chmod -R 777 /usr/local/hadoop-3.3.5/logs 로 쓰기 권한 부여
->해결됨.
-
데몬 출력은 $HADOOP_HOME/logs에 기록됨

 

 

4) MapReduce 실행 HDFS 디렉토리 생성

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir /user/<사용자 이름>

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/ny

 

5) 입력 파일을 분산 파일 시스템에 복사

bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input

 

6) 제공된 example 실행, output 확인

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'

bin/hdfs dfs -cat output/*

 

7) 데몬 작업 끝내기

sbin/stop-dfs.sh

5. ResourceManager, NodeManager 데몬 추가 실행, Yarn에서 MapReduce 작업을 실행한다.

4-4)까지 완료된 상태라고 가정

1) etc/hadoop/mapred-site.xml

<configuration> 
    <property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
    </property> 
    <property> 
        <name>mapreduce.application.classpath</name> 
        <value>$HADOOP_MAPRED_HOME /share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> 
    </property> 
</configuration>

2)etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

3) ResourceManager, NodeManager 데몬 시작/중지

sbin/start-yarn.sh

sbin/stop-yarn.sh

 

 

참고 자료 :

'하둡' 카테고리의 다른 글

빅데이터의 탐색  (0) 2023.09.11
빅데이터의 기초 지식  (0) 2023.09.08
hadoop - 분산 환경 구축하기  (0) 2023.04.07
하둡과의 만남!  (0) 2023.03.30