일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘
- effective python
- python
- 주식분석
- 그래프이론
- 하이브
- 선형대수
- hadoop2
- recursion
- 딥러닝
- GRU
- C언어
- tensorflow
- LSTM
- graph
- 하둡2
- scrapy
- NumPy
- C
- 코딩더매트릭스
- 텐서플로
- collections
- yarn
- Sort
- codingthematrix
- hive
- HelloWorld
- 파이썬
- RNN
- Java
- Today
- Total
EXCELSIOR
Hadoop2(하둡2)설치 - 완전분산모드 & 네임노드 HA구성 본문
이번 포스팅에서는 하둡2를 완전 분산 모드로 설치하면서 네임노드 HA를 구성해본다.
우선 완전분산모드로 설치하기 위해서는 최소 3대이상의 서버가 필요하다. 그 이유는 네임노드 HA 구성에 필요한 저널노드가 적어도 3대 이상의 서버에서 실행돼야 하기 때문이다.
다행히 최근에 VirtualBox에다가 CentOS 7을 설치하고 연결하는 것을 다른팀 분한테 배워서 Ubuntu 1대, CentOS 3대 총 4대의 서버를 구성했다. VirtualBox에 가상머신 설치는 다음에 포스팅 하겠다.
위 네 대의 서버는 JDK 설치, hadoop 실행 계정 생성, SSh 인증과 같은 기본적인 환경설정이 완료돼 있어야 한다.
1. 하둡 실행 계정 생성
root 계정으로 하둡을 설치할 수 있지만(실은 이때까지 root계정으로 단일노드로 설치하여 포스팅했다...) 매우 위험하다. 혹여나 잘못되면 시스템 자체를 사용할 수 없기 때문이다. 그래서 이번 포스팅에서 완전 분산 모드로 설치하면서 계정을 hadoop으로 통일했다.
root@hadoop: # vi /etc/hosts 192.168.56.1 hadoop 192.168.56.101 hadoop01 192.168.56.102 hadoop02 192.168.56.103 hadoop03
위와 같이 호스트 정보를 4대의 서버에 동일하게 적용한다.
2. Java 설치
호스트명 hadoop은 기존 Ubuntu16.04 이기 때문에 jdk1.8이 설치되어 있었지만, 나머지 hadoop01~03까지는 VirtualBox에 CentOS7을 설치했기 때문에 OpenJDK가 설치되어 있었다. 이를 jdk로 바꿔주기 위해 다음과 같은 명령어를 입력하여 open-jdk를 제거해 주었다.
[root@hadoop01 ~]# rpm -qa | grep jdk ex) java-1.8.0-openjdk-1.8.0-1.48.1.11.3.el6_2.x86_64 [root@hadoop01 ~]# yum remove java-1.8.0-openjdk-1.8.0-1.48.1.11.3.el6_2.x86_64
그런다음 Oracle 사이트에 들어가 Linux에 해당하는 jdk를 다운받았다.
JDK를 다운받은 뒤 해당 파일을 root계정으로 로그인 한 뒤 /usr/local에 저장하여 압축을 푼다.
[root@hadoop01 ~]# cd /usr/local [root@hadoop01 ~]# chmod 755 jdk-8u121-linux-x64.tar.gz [root@hadoop01 ~]# tar xvfz jdk-8u121-linux-x64.tar.gz
압축을 풀고 나면 JDK 경로를 쉽게 찾을 수 있게 다음과 같이 심볼릭 링크를 생성한다.
[root@hadoop01 ~]# ln -s jdk.1.8.0_121 java
마지막으로 /etc/profile 파일에 java 경로 관련 환경변수를 등록한다.
[root@hadoop01 ~]# vi /etc/profile export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export CLASS_PATH="." [root@hadoop01 ~]# resource /etc/profile [root@hadoop01 ~]# java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
3. SSH 설정
다음과 같은 명령어를 통하여 SSH 공개키를 네임노드가 설치될 hadoop과 hadoop01 호스트에 각각 만들어 준다. 비밀번호 입력없이 엔터(Enter)를 누르면 된다.
hadoop@hadoop ~:$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. [hadoop@hadoop01 ~]$ ssh-keygen -t rsa
공개키는 사용자 계정의 홈 디렉터리에 있는 .ssh 폴더에 생성된다. 생성된 공개키를 ssh-copy-id 명령어를 이용해 다른 서버에 복사한다. ssh-copy-id 명령어는 대상 서버의 .ssh 디렉터리 안에 있는 authorized_keys 파일에 공개키를 입력하며, 다음과 같은 형식으로 실행한다.
ssh-copy-id -i [복사할 공개키 경로] [대상 서버 계정]@[대상 서버]
hadoop@hadoop ~:$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop01 Are you sure you want to continue connecting (yes/no)? yes hadoop@hadoop ~:$ ssh hadoop01 Last login: Fri Jan 20 16:57:59 2017 from hadoop
위에서 확인할 수 있듯이 암호를 묻지 않고 바로 hadoop01 서버에 접속하는 것을 확인할 수 있다. 위와같이 ssh-copy-id 명령어를 모든 서버에(hadoop01~03) 공개키를 복사한다.
4. 프로토콜 버퍼 설치(Protocol Buffer)
프로토콜 버퍼에 대한 설명과 설치방법은 여기 를 클릭하면 확인할 수 있다. hadoop01 ~ 03 서버에 프로토콜 버퍼를 설치한다. root 계정으로 접속한 뒤 실행한다.
cd /usr/local tar xvfz protobuf-2.5.0.tar.gz cd protobuf-2.5.0 ./configure make make install
5. 주키퍼 설치
네임노드 HA를 구성하려면 주키퍼를 먼저 설치해야한다. 주키퍼는 다음과 같은 순서로 설치한다.
1) 주키퍼
주키퍼를 설치할 서버 hadoop, hadoop01, hadoop02에 zookeeper계정을 다음과 같이 만든다.
adduser zookeeper passwd zookeeper
위 3번의 SSH설정을 zookeeper 계정에도 똑같이 적용한다.
2) 주키퍼 다운로드
다음과 같이 wget 명령어를 이용해 설치파일을 zookeeper 계정의 home 디렉터리에 다운로드 받은 뒤 압축을 푼다.
wget "http://apache.tt.co.kr/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz" tar xvfz zookeeper-3.4.9.tar.gz
bin디렉터리에는 주키퍼 클라이언트와 서버를 실행하기 위한 셸 스크립트 파일이 들어 있고, 주키퍼 환경설정을 위한 파일은 conf에 들어 있다. 주키퍼를 실행하려면 zoo.cfg 파일을 conf에 저장해야한다. 기존 conf 디렉터리에는 샘플 파일인 zoo_sample.cfg만 있으므로 다음과 같이 zoo_sample.cfg를 복사한 후 해당파일을 수정한다.
zookeeper@hadoop:~$ cd /home/zookeeper/zookeeper-3.4.9 zookeeper@hadoop:~/zookeeper-3.4.9$ cp conf/zoo_sample.cfg conf/zoo.cfg zookeeper@hadoop:~/zookeeper-3.4.9$ vi conf/zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/home/zookeeper/data # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients maxClientCnxns=0 maxSessionTimeout=180000 server.1=hadoop:2888:3888 server.2=hadoop01:2888:3888 server.3=hadoop02:2888:3888
- dataDir: 주키퍼 스냅샷을 저장하는 경로이다. 기본값은 /tmp/zookeeper로 되어 있으며 주키퍼 계정의 홈 디렉터리로 경로를 변경한다.
- maxClientCnxns: 주키퍼의 최대 클라이언트 커넥션 개수이다. 0은 무제한을 의미하며, 기본값은 60으로 설정되어있다.
- maxSessionTimeout: 세션별 타임아웃 시간이며, 밀리초(ms) 단위로 설정한다.
- server.#: 이 옵션은 멀티서버로 구성할 서버를 등록하는 옵션이다. "server."뒤의 값은 해당 서버의 아이디를 의미한다. 숫자 또는 관리자가 원하는 값을 부여하면 된다. 첫 번째 포트인 2888은 주키퍼의 리더에 접속하기 위한 포트이고, 두 번째 포트인 3888은 리더를 결정하는데 사용한다.
"server.#"에서 서버별로 아이디를 부여했다. 이 아이디는 zoo.cfg에만 설정되는 것이 아니라 주키퍼 데이터 디렉터리에도 저장돼 있어야 한다. 다음과 같이 dataDir 항목의 디렉터리를 만들고, myid라는 파일을 생성한다. myid에는 zoo.cfg에서 설정한 아이디를 등록하면된다.
zookeeper@hadoop:~/zookeeper-3.4.9$ cd /home/zookeeper zookeeper@hadoop:~$ mkdir data zookeeper@hadoop:~$ cd data zookeeper@hadoop:~$ vi myid 1 zookeeper@hadoop:~$ cat data/myid 1
다른 서버에도 주키퍼를 설치한다. scp와 ssh 명령어를 이용해 설치한다.
zookeeper@hadoop:~$ cd $HOME zookeeper@hadoop:~$ tar cvfz zookeeper.tar.gz zookeeper-3.4.9 zookeeper@hadoop:~$ scp zookeeper.tar.gz zookeeper@hadoop01:/home/zookeeper zookeeper@hadoop:~$ scp zookeeper.tar.gz zookeeper@hadoop02:/home/zookeeper zookeeper@hadoop:~$ ssh hadoop01 "cd /home/zookeeper; tar xvfz zookeeper.tar.gz; mkdir data" zookeeper@hadoop:~$ ssh hadoop02 "cd /home/zookeeper; tar xvfz zookeeper.tar.gz; mkdir data"
그런다음 hadoop01, hadoop02 서버의 data/myid파일을 각각 2, 3으로 만들어 준다.
마지막으로 주키퍼 서버를 실행하면 주키퍼 클러스터 구성이 완료된다. 각 서버마다 zookeeper 계정으로 로그인 해서 다음과 같이 주키퍼 서버를 실행한다.
zookeeper@hadoop:~$ cd zookeeper-3.4.9 zookeeper@hadoop:~/zookeeper-3.4.9$ ./bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
주키퍼는 별도의 웹 인터페이스를 제공하지 않으므로 다음과 같이 명령어로 서버 상태를 확인해야 한다.
[zookeeper@hadoop02 zookeeper-3.4.9]$ ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Mode: leader
6. 하둡2 설치
1) 하둡2 다운로드 및 압축 파일 해제
wget "http://mirror.apache-kr.org/hadoop/common/stable2/hadoop-2.7.3.tar.gz" cd /home/hadoop tar xvfz hadoop-2.7.3.tar.gz #압축풀고 난 뒤 hadoop-2.7.3 디렉터리에 대한 심볼릭 링크를 생성 ln -s hadoop-2.7.3 hadoop2
2) 하둡2 환경설정 파일 수정
수정 파일은 etc/hadoop에 저장되어 있다.
① hadoop-env.sh 수정
# The java implementation to use. export JAVA_HOME=/usr/local/java export HADOOP_PID_DIR=/home/hadoop/hadoop-2.7.3/pids export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
② masters 수정 : 네임노드 HA를 구성하면 masters 파일을 작성할 필요가 없다. 스텐바이 네임노드가 보조네임노드의 역할을 대체하기 때문이다.
③ slaves 수정
vi slaves hadoop hadoop01 hadoop02 hadoop03
④ core-site.xml 수정
1 2 3 4 5 6 7 8 9 10 11 | <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop-cluster</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>hadoop:2181,hadoop01:2181,hadoop02:2181</value> </property> </configuration> | cs |
⑤ hdfs-site.xml 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/data/dfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/data/dfs/datanode</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/data/dfs/journalnode</value> </property> <property> <name>dfs.nameservices</name> <value>hadoop-cluster</value> </property> <property> <name>dfs.ha.namenodes.hadoop-cluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name> <value>hadoop:8020</value> </property> <property> <name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name> <value>hadoop01:8020</value> </property> <property> <name>dfs.namenode.http-address.hadoop-cluster.nn1</name> <value>hadoop:50070</value> </property> <property> <name>dfs.namenode.http-address.hadoop-cluster.nn2</name> <value>hadoop01:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop:8485;hadoop01:8485;hadoop02:8485/hadoop-cluster</value> </property> <property> <name>dfs.client.failover.proxy.provider.hadoop-cluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</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> </configuration> | cs |
④ yarn-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <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.local-dirs</name> <value>/home/hadoop/data/yarn/nm-local-dir</value> </property> <property> <name>yarn.resourcemanager.fs.state-store.uri</name> <value>/home/hadoop/data/yarn/system/rmstore</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop</value> </property> <property> <name>yarn.web-proxy.address</name> <value>0.0.0.0:8089</value> </property> </configuration> | cs |
7. 하둡 배포
설정한 하둡2 설치파일을 scp와 ssh 명령어를 통해서 전체 서버에 배포한다.
hadoop@hadoop:~$ cd /home/hadoop hadoop@hadoop:~$ tar cvfz hadoop.tar.gz hadoop-2.7.3 hadoop@hadoop:~$ scp hadoop.tar.gz hadoop@hadoop01:/home/hadoop hadoop@hadoop:~$ scp hadoop.tar.gz hadoop@hadoop02:/home/hadoop hadoop@hadoop:~$ scp hadoop.tar.gz hadoop@hadoop03:/home/hadoop hadoop@hadoop:~$ ssh hadoop@hadoop01 "cd /home/hadoop; tar xvfz hadoop.tar.gz" hadoop@hadoop:~$ ssh hadoop@hadoop02 "cd /home/hadoop; tar xvfz hadoop.tar.gz" hadoop@hadoop:~$ ssh hadoop@hadoop03 "cd /home/hadoop; tar xvfz hadoop.tar.gz"
8. 하둡2 실행
ZKFC를 실행하기 전에 반드시 다음과 같이 주키퍼를 초기화해야 한다.
hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs zkfc -formatZK
HDFS에 파일을 저장하려면 네임노드를 미리 포맷해야한다. 네임노드 HA에서는 네임노드를 포맷하기 전에 반드시 저널노드를 실행해야한다. 그래야 포맷 명령어를 실행했을 때 공유 에디트 로그 디렉터리를 초기화할 수 있기 때문이다. 저널노드는 hadoop-daemon.sh 스크립트로 실행한다. 만약 가상 분산 모드로 설치를 진행한 경우 rm -rf /home/hadoop/data 명령어로 삭제한다.
hadoop@hadoop:~/hadoop-2.7.3$ sbin/hadoop-daemon.sh start journalnode starting journalnode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-journalnode-hadoop.out [hadoop@hadoop01 hadoop-2.7.3]$ ./sbin/hadoop-daemon.sh start journalnode starting journalnode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-journalnode-hadoop01.out [hadoop@hadoop02 hadoop-2.7.3]$ ./sbin/hadoop-daemon.sh start journalnode starting journalnode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-journalnode-hadoop02.out
저널노드가 실행되면 네임노드를 포맷한다. 그다음 액티브 네임노드를 실행한 뒤 주키퍼 장애 컨트롤러(ZKFC)를 실행한다.
hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs namenode -format hadoop@hadoop:~/hadoop-2.7.3$ sbin/hadoop-daemon.sh start namenode starting namenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-hadoop.out hadoop@hadoop:~/hadoop-2.7.3$ sbin/hadoop-daemon.sh start zkfc starting zkfc, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-zkfc-hadoop.out
전체 데이터노드를 실행한다.
hadoop@hadoop:~/hadoop-2.7.3$ sbin/hadoop-daemon.sh start datanode starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-hadoop.out starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-hadoop01.out starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-hadoop02.out
이제 스텐바이 네임노드를 설정한다. 우선 스탠바이 네임노드를 실행할 서버에 접속한 후 하둡 디렉터리로 이동해 다음과 같이 액티브 네임노드의 메타데이터를 복사한다. bootstrapStandby 명령어를 실행하면 스탠바이 네임노드를 포맷하고 액티브 네임노드의 메타데이터가 스탠바이 네임노드로 복사된다.
[hadoop@hadoop01 hadoop-2.7.3]$ ./bin/hdfs namenode -bootstrapStandby [hadoop@hadoop01 hadoop-2.7.3]$ ./sbin/hadoop-daemon.sh start namenode starting namenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-hadoop01.out
스텐바이 네밍노드용 주키퍼 장애 컨트롤러(ZKFC)를 실행한다.
[hadoop@hadoop01 hadoop-2.7.3]$ ./sbin/hadoop-daemon.sh start zkfc starting zkfc, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-zkfc-hadoop01.out
드디어 모든 HDFS 설치 작업이 완료됐다. 이번에는 HDDFS가 정상적으로 작동하는지 테스트 해본다.
먼저 다음과 같이 디렉터리를 생성하고 etc/hadoop/hadoop-env.sh 파일을 업로드한 뒤 파일목록을 출력한다.
hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs dfs -mkdir user hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs dfs -mkdir user/hadoop hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs dfs -mkdir user/hadoop/conf hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs dfs -put etc/hadoop/hadoop-env.sh user/hadoop/conf/ hadoop@hadoop:~/hadoop-2.7.3$ bin/hdfs dfs -ls user/hadoop/conf Found 1 items -rw-r--r-- 1 hadoop hadoop 4251 2017-01-21 00:22 user/hadoop/conf/hadoop-env.sh
이제 얀 클러스터와 맵리듀스 잡을 위한 히스토리 서버도 함께 실행한다.
hadoop@hadoop:~/hadoop-2.7.3$ sbin/start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-hadoop.out hadoop: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hadoop.out hadoop02: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hadoop02.out hadoop01: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hadoop01.out hadoop03: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hadoop03.out hadoop@hadoop:~/hadoop-2.7.3$ sbin/mr-jobhistory-daemon.sh start historyserver starting historyserver, logging to /home/hadoop/hadoop-2.7.3/logs/mapred-hadoop-historyserver-hadoop.out
모든 하둡 데몬이 정상적으로 실행됐다면 네임노드가 설치된 hadoop과 hadoop01에는 다음과 같은 프로세스가 출력된다.
hadoop@hadoop:~/hadoop-2.7.3$ jps 15841 NodeManager 16150 JobHistoryServer 14650 JournalNode 14974 DFSZKFailoverController 15695 ResourceManager 15039 DataNode 16223 Jps [hadoop@hadoop01 hadoop-2.7.3]$ jps 14913 NodeManager 14597 DFSZKFailoverController 15320 Jps 14026 JournalNode 14159 DataNode
마지막으로 WordCount 예제를 실행해 얀이 정상적으로 작동하는지 확인한다.
hadoop@hadoop:~/hadoop-2.7.3$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount user/hadoop/conf output 17/01/21 00:33:49 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id 17/01/21 00:33:49 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= 17/01/21 00:33:49 INFO input.FileInputFormat: Total input paths to process : 1 17/01/21 00:33:49 INFO mapreduce.JobSubmitter: number of splits:1 17/01/21 00:33:50 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local937100957_0001 17/01/21 00:33:50 INFO mapreduce.Job: The url to track the job: http://localhost:8080/ 17/01/21 00:33:50 INFO mapreduce.Job: Running job: job_local937100957_0001 17/01/21 00:33:50 INFO mapred.LocalJobRunner: OutputCommitter set in config null 17/01/21 00:33:50 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1 17/01/21 00:33:50 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOut putCommitter 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Waiting for map tasks 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Starting task: attempt_local937100957_0001_m_000000_0 17/01/21 00:33:50 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1 17/01/21 00:33:50 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ] 17/01/21 00:33:50 INFO mapred.MapTask: Processing split: file:/home/hadoop/hadoop-2.7.3/user/hadoop/conf/hadoop -env.sh:0+4251 17/01/21 00:33:50 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584) 17/01/21 00:33:50 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100 17/01/21 00:33:50 INFO mapred.MapTask: soft limit at 83886080 17/01/21 00:33:50 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600 17/01/21 00:33:50 INFO mapred.MapTask: kvstart = 26214396; length = 6553600 17/01/21 00:33:50 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputB uffer 17/01/21 00:33:50 INFO mapred.LocalJobRunner: 17/01/21 00:33:50 INFO mapred.MapTask: Starting flush of map output 17/01/21 00:33:50 INFO mapred.MapTask: Spilling map output 17/01/21 00:33:50 INFO mapred.MapTask: bufstart = 0; bufend = 6266; bufvoid = 104857600 17/01/21 00:33:50 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26212324(104849296); length = 207 3/6553600 17/01/21 00:33:50 INFO mapred.MapTask: Finished spill 0 17/01/21 00:33:50 INFO mapred.Task: Task:attempt_local937100957_0001_m_000000_0 is done. And is in the process of committing 17/01/21 00:33:50 INFO mapred.LocalJobRunner: map 17/01/21 00:33:50 INFO mapred.Task: Task 'attempt_local937100957_0001_m_000000_0' done. 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Finishing task: attempt_local937100957_0001_m_000000_0 17/01/21 00:33:50 INFO mapred.LocalJobRunner: map task executor complete. 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Waiting for reduce tasks 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Starting task: attempt_local937100957_0001_r_000000_0 17/01/21 00:33:50 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1 17/01/21 00:33:50 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ] 17/01/21 00:33:50 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce. Shuffle@3d215c03 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=652528832, maxSingleShuffleLimit=163 132208, mergeThreshold=430669056, ioSortFactor=10, memToMemMergeOutputsThreshold=10 17/01/21 00:33:50 INFO reduce.EventFetcher: attempt_local937100957_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events 17/01/21 00:33:50 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local93710095 7_0001_m_000000_0 decomp: 4541 len: 4545 to MEMORY 17/01/21 00:33:50 INFO reduce.InMemoryMapOutput: Read 4541 bytes from map-output for attempt_local937100957_000 1_m_000000_0 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 4541, inMemoryMapOutpu ts.size() -> 1, commitMemory -> 0, usedMemory ->4541 17/01/21 00:33:50 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning 17/01/21 00:33:50 INFO mapred.LocalJobRunner: 1 / 1 copied. 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk ma p-outputs 17/01/21 00:33:50 INFO mapred.Merger: Merging 1 sorted segments 17/01/21 00:33:50 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 4519 byt es 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: Merged 1 segments, 4541 bytes to disk to satisfy reduce memory limit 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: Merging 1 files, 4545 bytes from disk 17/01/21 00:33:50 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce 17/01/21 00:33:50 INFO mapred.Merger: Merging 1 sorted segments 17/01/21 00:33:50 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 4519 byt es 17/01/21 00:33:50 INFO mapred.LocalJobRunner: 1 / 1 copied. 17/01/21 00:33:50 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skip records 17/01/21 00:33:50 INFO mapred.Task: Task:attempt_local937100957_0001_r_000000_0 is done. And is in the process of committing 17/01/21 00:33:50 INFO mapred.LocalJobRunner: 1 / 1 copied. 17/01/21 00:33:50 INFO mapred.Task: Task attempt_local937100957_0001_r_000000_0 is allowed to commit now 17/01/21 00:33:50 INFO output.FileOutputCommitter: Saved output of task 'attempt_local937100957_0001_r_000000_0 ' to file:/home/hadoop/hadoop-2.7.3/output/_temporary/0/task_local937100957_0001_r_000000 17/01/21 00:33:50 INFO mapred.LocalJobRunner: reduce > reduce 17/01/21 00:33:50 INFO mapred.Task: Task 'attempt_local937100957_0001_r_000000_0' done. 17/01/21 00:33:50 INFO mapred.LocalJobRunner: Finishing task: attempt_local937100957_0001_r_000000_0 17/01/21 00:33:50 INFO mapred.LocalJobRunner: reduce task executor complete. 17/01/21 00:33:51 INFO mapreduce.Job: Job job_local937100957_0001 running in uber mode : false 17/01/21 00:33:51 INFO mapreduce.Job: map 100% reduce 100% 17/01/21 00:33:51 INFO mapreduce.Job: Job job_local937100957_0001 completed successfully 17/01/21 00:33:51 INFO mapreduce.Job: Counters: 30 File System Counters FILE: Number of bytes read=609708 FILE: Number of bytes written=1190515 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 Map-Reduce Framework Map input records=98 Map output records=519 Map output bytes=6266 Map output materialized bytes=4545 Input split bytes=126 Combine input records=519 Combine output records=268 Reduce input groups=268 Reduce shuffle bytes=4545 Reduce input records=268 Reduce output records=268 Spilled Records=536 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=0 Total committed heap usage (bytes)=638582784 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=4299 File Output Format Counters Bytes Written=3508
'DataBase > Hadoop' 카테고리의 다른 글
Apache Tajo (아파치 타조) 개념 및 설치 (0) | 2016.12.12 |
---|---|
SQL-On-Hadoop(SQL-온-하둡) 개념 및 종류 (0) | 2016.12.09 |
스쿱(sqoop)과 MS-SQL 연동하기 (0) | 2016.12.08 |
스쿱(sqoop) 설치 (0) | 2016.12.07 |
아파치 스쿱(Apache Sqoop) (1) | 2016.12.07 |