맥(Mac)에서 하둡(Hadoop) 사용하기
Updated:
- 하둡(hadoop)
- 하둡(hadoop)?
- 설치/설정
하둡(hadoop)?
- 아파치 하둡(High-Availability Distributed Object-Oriented Platform)
아파치 하둡은 범용 하드웨어 장비로 구성된 대규모 클러스터에서 많은 양의 데이터를 처리하고 질의하기 위한 오픈소스 자바 프레임워크다. 야후와 더그 커팅이 시작했으며 야후가 제공한 중요한 기술적 투자 덕분에 아파치 하둡은 기업 규모에도 적용 가능한 클라우딩 컴퓨팅 기술로 발전했고, 이제는 빅데이터 처리를 위한 산업 표준 프레임워크라고 할 수 있다.
R, 파이썬은 풍부한 패키지 라이브러리를 사용해 데이터를 분석할 수 있는 능력이 있다. 하지만 대용량의 데이터셋은 작업하기 어렵다는 단점이 있다. 반면에 하둡은 TB, PB급 데이터도 저장하고 처리할 수 있다.
일반적으로 컴퓨터의 작업 수행은 [메모리에 데이터를 적재 -> CPU의 처리] 과정을 거친다. 바로 이 때 RAM의 용량보다 큰 데이터를 한번에 적재하려고 하면 에러가 발생하게 된다. 해결방법으로는 물리적으로 하드웨어 설정을 늘려야 하지만 임시방편일 뿐이다. 따라서 빅데이터를 저장하고 병렬 연산을 수행할 수 있는 하둡 클러스터를 도입해야 한다. (실제로 추천시스템 구축 경험당시 sales테이블의 데이터가 350만건으로 크다고 생각하지 않았는데도 memory out을 자주 마주했었음.)
하둡은 주로 리눅스 운영체제를 지원한다. 윈도우에서 구동하려면 가상환경을 이용해야 한다.
설치/설정
- 설치
homebrew를 사용하여 설치
brew install hadoop
xcr과 관련된 에러 발생으로 설치 실패.
“xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun”
–> 검색해보니 맥 카탈리나 OS 업데이트 이후 xcode cli에 관한 이슈가 있었고, 간단히 아래의 코드 실행 후 해결.
xcode-select --install
- 설정
설치 후 수정해야 하는 파일은 총 4개이다. (hadoop-env.sh, Core-site.xml, mapred-site.xml, hdfs-site.xml)
# 경로는 설치한 시점에 따라 버전이 다를 수 있습니다. 저의 경우엔 3.3.0
# 경로상에 4개의 파일 모두 존재.
vim /usr/local/Cellar/hadoop/3.3.0/libexec/etc/hadoop/~~~~.sh
hadoop-env.sh 파일을 열어준 후 수정
-기존: export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
-변경: export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
Core-site.xml
파일을 열어준 후 아래의 내용을
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
<description>다른 임시 디렉토리들을 위한 기본 디렉토리.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>기본 파일 시스템의 이름. URI의 스키마와 권한이 FilesSystem 구현을 정한다. URI에서 스키마는 FileSystem 구현 클래스 이름을 정하는 설정 속성(fs.SCHEME.impl)을 정한다. 권한은 파일시스템을 위한 host, port등을 결정하는데 사용된다.</description>
</property>
mapred-site.xml
파일을 열어준 후 아래의 내용을
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
<description>맵리듀스 잡 트래커가 수행되는 호스트와 포트. "local"이라면 잡은 단일 맵과 리듀스 태스크로 프로세스 내에서 실행된다.</description>
</property>
hdfs-site.xml
파일을 열어준 후 아래의 내용을
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<description>기본 블록 복제본. 파일이 생성될 때 작성되는 실제 복제분의 수. 생성 시점에 따로 명시하지 않으면 기본값이 사용된다.</description>
- 실행
하둡을 실행하기 전에, 하둡 파일 시스템으로 포맷을 해야 한다. 아래와 같이 입력하여 하둡 파일 시스템으로 포맷한다
hdfs namenode -format
위의 명령어로 하둡 파일 시스템으로 포맷을 해 주고, 아래와 ssh key를 생성하고 사용한다.
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
하둡을 실행하기 전 원격 로그인을 허용해야 한다. 환경설정 -> 공유 -> 원격로그인 체크
# 설정이 안되어 있으면 "localhost: ssh: connect to host localhost port 22: Connection refused" 에러발생.
이제 하둡을 실행해보자. 아래와 같이 실행하면 하둡을 띄울 수 있다.
/usr/local/Cellar/hadoop/3.3.0/sbin/start-dfs.sh
/usr/local/Cellar/hadoop/3.3.0/sbin/start-yarn.sh
# 한번에 모두 실행
/usr/local/Cellar/hadoop/3.3.0/sbin/start-all.sh
이후 jps
를 실행하면 실행중인 서비스를 확인할 수 있다. (6개가 떠있어야 정상)
그리고 localhost로 하둡을 띄웠기 때문에 로컬호스트에 접속해서 하둡의 상태 체크 확인가능.
- Cluster status: http://localhost:8088
- HDFS status: http://localhost:9870 ( 3.x는 9870, 2.x는 50070이다. )
- Secondary NameNode status: http://localhost:9868 ( 3.x는 9868, 2.x는 50090이다. )
이렇게 설치와 실행을 해봤다. 다음 포스팅에서는 특징과 기능에 대해 세부적으로 알아보겠다.
Leave a comment