Bigdata Engineer & Analyst Story

A Hugo theme for creative and technical writing

하둡(Hadoop) 싱글/가상분산 모드 설치

사전 작업

  • 레파지토리 최신화(패키지들의 새로운 버젼이 있는지 확인하고 최신 버전으로 업그래이드)
  • sudo apt-get update
  • sudo apt-get upgrade

Java 설치

Java 설치 참조 링크

MariaDB

MariaDB 설치

  • sudo apt-get install -y mariadb-server

mysql 사용자 확인

  • cat /etc/passwd 를 수행해 mysql 유져를 확인합니다.

MariaDB 접속

  • Unix Socket 방식으로 DB에 접속합니다.
  • sudo mysql

기타

DB 재시작 명령어

  • service mysql restart
  • /etc/init.d/mysql restart
  • mysql.server restart

utf8mb4 인코딩 확인

서비스 확인

  • sudo service –status-all |grep mysql

인증방법 Unix Socket 방식으로 변경

  • 원문: Authentication from MariaDB 10.4
  • MariaDB 는 10.0 부터 인증 방식을 Unix Socket방식으로 변경했습니다. Unix Socket방식은 mysql 사용자와, 시스템 사용자를 일치시키는 방식입니다. 예전 인증방법은 두 root가 분리되어 있을 때는, mysql 사용자 root 를 명시하고 로그인 했습니다.
    • $ mysql -u root -p
  • Unix Socket 방식은 이렇다. sudo 로서 root 권한이 있다는 사실만 증명하면, mysql 에선 다른 인증을 하지 않습니다.
    • $ sudo mysql
  • 만약, Unix Socket 을 사용하여, mysql 이라는 사용자로 mysql에 접근하려면 다음 명령어를 사용해야 합니다.
    • $ sudo -u mysql mysql -u mysql

하둡

버전: 2.9.2

사전작업

  • 키젠 설정
    • hadoop 계정에 해줘야 함
    • ssh-keygen -t rsa
    • cat ~/.ssh/id_rsa.pub » ~/.ssh/authorized_keys
    • chmod 0660 ~/.ssh/authorized_keys
  • SSH 서버 설치
    • sudo apt-get install openssh-server

바이너리 파일 다운로드 및 설치

  • 하둡 다운로드 링크
  • 위치변경: mv hadoop-2.9.2 /usr/local/hadoop-2.9.2
  • 소유권한 변경: sudo chown -R hadoop:hadoop hadoop-2.9.2/
  • 심볼링크: sudo ln -s /usr/local/hadoop-2.9.2 /usr/local/hadoop

.bashrc 변경

  • JAVA_HOME=/usr/java/default
  • HADOOP_HOME=/usr/local/hadoop
  • PATH=$PATH:$HADOOP_HOME/bin

hadoop-env.sh 수정

  • export JAVA_HOME=/usr/java/default
  • export HADOOP_PID_DIR=/usr/local/hadoop/pids

masters, slaves 수정

  • 네임노드 HA를 구성할 경우 스탠바이 네임노드가 보조네임노드의 기능을 대체한다. 하지만 가상 분산 모드로는 네임노드 HA를 구성할 수 없기 때문에 보조네임노드를 반드시 실행해야 한다. 또한 slaves 파일에는 데이터노드 호스트 목록을 설정해야 한다. 가상 분산 모드에서는 다음과 같이 설정한다. vi에디터로 masters 파일을 생성하고 localhost를 기입하고 저장합니다. slaves파일을 생성하고 데이터노드 호스트 목록을 기입하고 저장합니다.
  • masters -> localhost
  • slaves -> datanode01, datanode02

하둡2 수행

  • 네임노드를 초기화하고 모든 데몬을 수행합니다.
    • /usr/local/hadoop/bin/hdfs namenode -format
    • /usr/local/hadoop/sbin/start-all.sh (deprecated 예정)
    • /usr/local/hadoop/sbin/stop-all.sh (deprecated 예정)
    • DFS 시작 /usr/local/hadoop/sbin/start-dfs.sh
    • 얀 시작 /usr/local/hadoop/sbin/start-yarn.sh
    • 맵리듀스 히스토리 서버 시작 /usr/local/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
    • 웹프록시 서버 시작 /usr/local/hadoop/sbin/yarn-daemon.sh start proxyserver
    • DFS 종료 /usr/local/hadoop/sbin/stop-dfs.sh
    • 얀 종료 /usr/local/hadoop/sbin/stop-yarn.sh
    • 맵리듀스 히스토리 서버 종료 /usr/local/hadoop/sbin/mr-jobhistory-daemon.sh stop historyserver

HDFS/Yarn 화면 접속

  • http://127.0.0.1:50070
  • http://127.0.0.1:8088

예제 실행

HDFS에 파일을 저장하고 얀을 기반으로 맵리듀스 잡을 실행해 보겠습니다.

  • hadoop-env.sh를 HDFS에 저장
    • ./hdfs dfs -mkdir /user
    • ./hdfs dfs -mkdir /user/hadoop
    • ./hdfs dfs -mkdir /user/hadoop/conf
    • ./hdfs dfs -put /usr/local/hadoop/etc/hadoop/hadoop-env.sh /user/hadoop/conf/
    • ./hdfs dfs -ls /user/hadoop/conf/
  • WordCount 실행
    • ./yarn jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /user/hadoop/conf /user/hadoop/output
    • ./hdfs dfs -cat /user/hadoop/output/part-r-00000

비고

에러1

  • 메시지 0.0.0.0: ssh: connect to host 0.0.0.0 port 22: Connection refused localhost: ssh: connect to host localhost port 22: Connection refused
  • 원인 ssh 서버가 설치돼 있지 않아 발생함
  • 해결 openssh-server 설치
  • open ssh server 생성 in mac

에러2

  • cat: /usr/local/hadoop/slaves: No such file or directory cat: /usr/local/hadoop/slaves: No such file or directory Starting secondary namenodes [0.0.0.0] The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established. ECDSA key fingerprint is SHA256:kXhOQgozNkCxUEeojqJ/4rb9Cx7lmU4yDuEgT2Aw5YQ.
  • 원인
  • 해결 rsa 키 생성