Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

hadoop distcp

BigDATA/Hadoop 2016.10.28 11:17
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


$ ./hadoop distcp

usage: distcp OPTIONS [source_path...] <target_path>

              OPTIONS

 -append                       Reuse existing data in target files and

                               append new data to them if possible

 -async                        Should distcp execution be blocking

 -atomic                       Commit all changes or none

 -bandwidth <arg>              Specify bandwidth per map in MB

 -delete                       Delete from target, files missing in source

 -diff <arg>                   Use snapshot diff report to identify the

                               difference between source and target

 -f <arg>                      List of files that need to be copied

 -filelimit <arg>              (Deprecated!) Limit number of files copied

                               to <= n

 -filters <arg>                The path to a file containing a list of

                               strings for paths to be excluded from the

                               copy.

 -i                            Ignore failures during copy

 -log <arg>                    Folder on DFS where distcp execution logs

                               are saved

 -m <arg>                      Max number of concurrent maps to use for

                               copy

 -mapredSslConf <arg>          Configuration for ssl config file, to use

                               with hftps://

 -numListstatusThreads <arg>   Number of threads to use for building file

                               listing (max 40).

 -overwrite                    Choose to overwrite target files

                               unconditionally, even if they exist.

 -p <arg>                      preserve status (rbugpcaxt)(replication,

                               block-size, user, group, permission,

                               checksum-type, ACL, XATTR, timestamps). If

                               -p is specified with no <arg>, then

                               preserves replication, block size, user,

                               group, permission, checksum type and

                               timestamps. raw.* xattrs are preserved when

                               both the source and destination paths are

                               in the /.reserved/raw hierarchy (HDFS

                               only). raw.* xattrpreservation is

                               independent of the -p flag. Refer to the

                               DistCp documentation for more details.

 -sizelimit <arg>              (Deprecated!) Limit number of files copied

                               to <= n bytes

 -skipcrccheck                 Whether to skip CRC checks between source

                               and target paths.

 -strategy <arg>               Copy strategy to use. Default is dividing

                               work based on file sizes

 -tmp <arg>                    Intermediate work path to be used for

                               atomic commit

 -update                       Update target, copying only missingfiles or

                               directories

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Tajo Setting(0.2.0-incubating)

BigDATA/Tajo 2014.09.22 11:19
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




동기 :
 

SQL-on-Hadoop을 고민하던 차에 아래의 사이트에서 흥미를 얻었습니다.

http://blrunner.com/71


환경 :

OS : ubuntu

서버 총 4대 

  ㄴ 네임노드 1대, 데이터 노드 3


타조 0.2.0셋팅 시.. 아래처럼 먼저 제대로 파악하고 했어야했는데..덕분에 확실하게 삽질해버렸네요..ㅋㅜ.ㅜㅋ

  • Hadoop 2.0.3-alpha or 2.0.5-alpha
  • Java 1.6 or higher
  • Protocol buffer 2.4.1

0.8.0은 아래와 같습니다~:D

  • Hadoop 2.2.0 or higher
  • Java 1.6 or higher
  • Protocol buffer 2.5.0


다운로드 :

Tajo 0.2.0을 셋팅하기 위해서는...아래의 링크에서 다운을 받으시면 됩니다.

http://archive.apache.org/dist/tajo/tajo-0.2.0-incubating/


배포 :

받으신 파일을 특정 서버에 올리신 뒤 scp명령어로 각 서버에 배포 합니다.

scp tajo-0.2.0-incubating-src.tar.gz dakao@search-dn-hadoop04:/home/hadoop/hadoop/install/


압축해제 :

$ tar xvfz tajo-0.2.0-incubating-src.tar.gz



Build  :


압축해제를 한 뒤에 나온 소스코드를 빌드시켜보자! 라고 했는데 maven project 이다~~ㅠ ㅠ 


maven 다운! : http://maven.apache.org/download.cgi


.profile에 추가

export MAVEN_HOME=/home/hadoop/hadoop/apache-maven-3.2.3

export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin

source .profile 로 적용!


잘 깔렸나 확인!

$ mvn -version

Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)

Maven home: /home/hadoop/hadoop/apache-maven-3.2.3

Java version: 1.7.0_67, vendor: Oracle Corporation

Java home: /home/hadoop/hadoop/jdk1.7.0_67/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "3.13.0-32-generic", arch: "amd64", family: "unix"


이제! 진짜 빌드시켜보자! ㅎㅎㅎ

우선, /home/hadoop/hadoop/tajo-0.2.0-incubating 로 이동!


참고) /home/hadoop/hadoop/tajo-0.2.0-incubating/BUILDING.txt 의 내용이다.

Maven build goals:


 * Clean                      : mvn clean

 * Compile                   : mvn compile

 * Run tests                 : mvn test

 * Run integrating tests     : mvn verify

 * Create JAR                : mvn package

 * Run findbugs             : mvn compile findbugs:findbugs

 * Install JAR in M2 cache   : mvn install

 * Build distribution        : mvn package [-Pdist][-Dtar]


명령어 수행!

mvn clean package -DskipTests -Pdist -Dtar


error

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (generate-sources) on project tajo-common: Command execution failed. Cannot run program "protoc" (in directory "/home/hadoop/hadoop/tajo-0.2.0-incubating/tajo-common"): error=2, No such file or directory -> [Help 1]

[ERROR] 

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR] 

[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

[ERROR] 

[ERROR] After correcting the problems, you can resume the build with the command

[ERROR]   mvn <goals> -rf :tajo-common 


http://stackoverflow.com/questions/22620300/protocol-buffers-compiler-maven-plugin



Your protoc executable could not be executed on linux



위의 오류가나서..아래의 사이트를 통해 셋팅해주었다!!

http://www.confusedcoders.com/random/how-to-install-protocol-buffer-2-5-0-on-ubuntu-13-04

셋팅 후 확인

protoc --version

libprotoc 2.5.0


다시 빌드 시도!!

역시나 오류..ㅠㅠ..

더보기


protoc 2.5.0 하고는 궁합이 맞질 않는 것 같다..


protoc 2.4.0으로 셋팅하려는데..문제가 발생하였다.


error

“Oracle JDK 7 Is NOT installed” error

http://askubuntu.com/questions/414885/oracle-jdk-7-is-not-installed-error


위의 사이트를 참고하여 해결!

........

update-alternatives: using /usr/lib/jvm/java-7-oracle/bin/wsimport to provide /usr/bin/wsimport (wsimport) in auto mode

update-alternatives: using /usr/lib/jvm/java-7-oracle/bin/xjc to provide /usr/bin/xjc (xjc) in auto mode

Oracle JDK 7 installed

update-alternatives: using /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so to provide /usr/lib/mozilla/plugins/libjavaplugin.so (mozilla-javaplugin.so) in auto mode

Oracle JRE 7 browser plugin installed


다시 protoc 2.4.0을 셋팅 해보겠다!

참고 : https://pixhawk.ethz.ch/installation/ubuntu

Google Protocol Buffers

We're also using Google Protocol Buffers for message serialization. The following commands will install protobuf-2.4.1 that is needed for some processes.

wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
tar xvfz protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
./configure
make
sudo make install  


dakao@ubuntu:/home/hadoop/hadoop/protobuf-2.4.1$ protoc --version

libprotoc 2.4.1


다시 빌드 시도!![참고 사이트 : http://tajo.apache.org/docs/0.8.0/getting_started/building.html ]

$ cd tajo-x.y.z
$ mvn clean package -DskipTests -Pdist -Dtar
$ ls tajo-dist/target/tajo-x.y.z-SNAPSHOT.tar.gz


[결과] ㅠ_ㅠ 드디어 성공이네요!!


........................

[INFO] Executed tasks

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary:

[INFO] 

[INFO] Tajo Main ......................................... SUCCESS [0.971s]

[INFO] Tajo Project POM .................................. SUCCESS [1.851s]

[INFO] Tajo Common ....................................... SUCCESS [30.317s]

[INFO] Tajo Algebra ...................................... SUCCESS [22.320s]

[INFO] Tajo Rpc .......................................... SUCCESS [12.125s]

[INFO] Tajo Catalog Common ............................... SUCCESS [11.075s]

[INFO] Tajo Catalog Client ............................... SUCCESS [0.515s]

[INFO] Tajo Catalog Server ............................... SUCCESS [1.247s]

[INFO] Tajo Core Storage ................................. SUCCESS [1:22.182s]

[INFO] Tajo Core PullServer .............................. SUCCESS [0.732s]

[INFO] Tajo Core Backend ................................. SUCCESS [1:30.781s]

[INFO] Tajo Core ......................................... SUCCESS [0.572s]

[INFO] Tajo Catalog ...................................... SUCCESS [0.688s]

[INFO] Tajo Distribution ................................. SUCCESS [3.251s]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 4:20.107s

[INFO] Finished at: Mon Sep 08 06:07:03 PDT 2014

[INFO] Final Memory: 51M/205M

[INFO] ------------------------------------------------------------------------ 


# 빌드 후 나온 스냅샷 압축 해제

그리고 build후 생긴 tajo-dist/target/tajo-0.2.0-incubating.tar.gz 압축을 해제한다.  

$ tar xvfz ./tajo-dist/target/tajo-0.2.0-incubating.tar.gz  로 압축을 해제한다.


# 타조 클러스터 

 http://tajo.apache.org/docs/0.8.0/configuration/preliminary.html


하하하하하하하....멘붕이네요 하둡 2.x version부터 지원을 하는군요! ㅎㅎㅎㅎ 

우선 하둡 2.x를 셋팅하도록 해야겠네요..ㅎㅎ 타조 클러스터는 그 후에 포스팅 하도록 하겠습니다^-^;

앞으로는 더 자세히 알아보고 덤벼야겠다는 생각을 했습니다..ㅠ.ㅠ..

그리고 Chef나 Docker같은 친구들과 친해져야겠다는 생각이 들었네요..


참고 사이트 :

http://tajo.apache.org/
https://blogs.apache.org/tajo/entry/apache_tajo_0_2_0

http://ko.wikipedia.org/wiki/%EB%8C%80%EC%88%98%ED%95%99

http://blrunner.com/67

http://ubuntuforums.org/showthread.php?t=1968712


- END -


저작자 표시 비영리 변경 금지
신고

'BigDATA > Tajo' 카테고리의 다른 글

Tajo Setting(0.2.0-incubating)  (0) 2014.09.22

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

04. 하둡 예제 실행 및 코딩해보기!

BigDATA/Hadoop 2014.09.15 14:56
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


1. 예제 실행


저번 시간에는 2014/09/11 - [BigDATA/Hadoop] - 부록. 하둡 설치  을 해보았습니다.


우선! 하둡에서 제공되어지는 예제코드와 예제 코드를 패키징한 jar를 수행 해보겠습니다.


1) 예제를 실행하기 전에 우선 다음과 같이 hadoop-env.sh 파일을 HDFS에 업로드 합니다.

    그냥 따라해봅시다~

  dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$ ./bin/hadoop fs -put conf/hadoop-env.sh conf/hadoop-env.sh


fs 명령어를 아직은 잘은 모르지만 한번 해봅시다~

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$ ./bin/hadoop fs -lsr conf/ 

-rw-r--r--   3 dakao supergroup       2540 2014-09-07 17:23 /user/dakao/conf/hadoop-env.sh


2) 파일이 업로드 되면 다음과 같이 하둡 명령어를 이용해 jar 파일을 실행합니다.

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$

./bin/hadoop jar hadoop-examples-*.jar wordcount conf/hadoop-env.sh wordcount_output

위의 명령어는 하둡명령어를 통해 jar를 수행한 것이고, hadoop-examples-*.jar파일에 있는 wordcount class를 실행하는데, 입력값은 

conf/hadoop-env.sh 파일을, 출력값은 output 디렉토리를 사용하겠다는 의미 입니다.

14/09/07 17:50:15 INFO input.FileInputFormat: Total input paths to process : 1

14/09/07 17:50:15 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/09/07 17:50:15 WARN snappy.LoadSnappy: Snappy native library not loaded

14/09/07 17:50:16 INFO mapred.JobClient: Running job: job_201409071442_0001

14/09/07 17:50:17 INFO mapred.JobClient:  map 0% reduce 0%

14/09/07 17:50:23 INFO mapred.JobClient:  map 100% reduce 0%

14/09/07 17:50:32 INFO mapred.JobClient:  map 100% reduce 100%

14/09/07 17:50:34 INFO mapred.JobClient: Job complete: job_201409071442_0001

14/09/07 17:50:34 INFO mapred.JobClient: Counters: 29

14/09/07 17:50:34 INFO mapred.JobClient:   Job Counters 

14/09/07 17:50:34 INFO mapred.JobClient:     Launched reduce tasks=1

14/09/07 17:50:34 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=6145

14/09/07 17:50:34 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

14/09/07 17:50:34 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

14/09/07 17:50:34 INFO mapred.JobClient:     Launched map tasks=1

14/09/07 17:50:34 INFO mapred.JobClient:     Data-local map tasks=1

14/09/07 17:50:34 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=9190

14/09/07 17:50:34 INFO mapred.JobClient:   File Output Format Counters 

14/09/07 17:50:34 INFO mapred.JobClient:     Bytes Written=2283

14/09/07 17:50:34 INFO mapred.JobClient:   FileSystemCounters

14/09/07 17:50:34 INFO mapred.JobClient:     FILE_BYTES_READ=2983

14/09/07 17:50:34 INFO mapred.JobClient:     HDFS_BYTES_READ=2665

14/09/07 17:50:34 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=124429

14/09/07 17:50:34 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=2283

14/09/07 17:50:34 INFO mapred.JobClient:   File Input Format Counters 

14/09/07 17:50:34 INFO mapred.JobClient:     Bytes Read=2540

14/09/07 17:50:34 INFO mapred.JobClient:   Map-Reduce Framework

14/09/07 17:50:34 INFO mapred.JobClient:     Map output materialized bytes=2983

14/09/07 17:50:34 INFO mapred.JobClient:     Map input records=61

14/09/07 17:50:34 INFO mapred.JobClient:     Reduce shuffle bytes=2983

14/09/07 17:50:34 INFO mapred.JobClient:     Spilled Records=348

14/09/07 17:50:34 INFO mapred.JobClient:     Map output bytes=3719

14/09/07 17:50:34 INFO mapred.JobClient:     Total committed heap usage (bytes)=176033792

14/09/07 17:50:34 INFO mapred.JobClient:     CPU time spent (ms)=1180

14/09/07 17:50:34 INFO mapred.JobClient:     Combine input records=305

14/09/07 17:50:34 INFO mapred.JobClient:     SPLIT_RAW_BYTES=125

14/09/07 17:50:34 INFO mapred.JobClient:     Reduce input records=174

14/09/07 17:50:34 INFO mapred.JobClient:     Reduce input groups=174

14/09/07 17:50:34 INFO mapred.JobClient:     Combine output records=174

14/09/07 17:50:34 INFO mapred.JobClient:     Physical memory (bytes) snapshot=245370880

14/09/07 17:50:34 INFO mapred.JobClient:     Reduce output records=174

14/09/07 17:50:34 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1276059648

14/09/07 17:50:34 INFO mapred.JobClient:     Map output records=305 

    

3) 이제 wordcount를 실행한 출력값이 정상적으로 생성됐는지 확인해보겠습니다. 

    fs 명령어의 cat 파라미터를 사용해서 HDFS에 저장된 출력값을 확인해보겠습니다.

우선은 fs -lsr로 어떤 파일들이 있는지 확인 해보겠습니다.(namenode이나 datanode 아무곳에서나 확인 가능!)


dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$ ./bin/hadoop fs -lsr wordcount_output/

-rw-r--r--   3 dakao supergroup          0 2014-09-07 17:50 /user/dakao/wordcount_output/_SUCCESS

drwxr-xr-x   - dakao supergroup          0 2014-09-07 17:50 /user/dakao/wordcount_output/_logs

drwxr-xr-x   - dakao supergroup          0 2014-09-07 17:50 /user/dakao/wordcount_output/_logs/history

-rw-r--r--   3 dakao supergroup      13774 2014-09-07 17:50 /user/dakao/wordcount_output/_logs/history/job_201409071442_0001_1410137416094_dakao_word+count

-rw-r--r--   3 dakao supergroup      51778 2014-09-07 17:50 /user/dakao/wordcount_output/_logs/history/job_201409071442_0001_conf.xml

-rw-r--r--   3 dakao supergroup       2283 2014-09-07 17:50 /user/dakao/wordcount_output/part-r-00000 


    

- Result

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$ ./bin/hadoop fs -cat wordcount_output/part-r-00000

# 39

$HADOOP_BALANCER_OPTS" 1

$HADOOP_DATANODE_OPTS" 1

$HADOOP_HOME/conf/slaves 1

$HADOOP_HOME/logs 1

$HADOOP_JOBTRACKER_OPTS" 1

$HADOOP_NAMENODE_OPTS" 1

$HADOOP_SECONDARYNAMENODE_OPTS" 1

$USER 1

'man 1

(fs, 1

-o 1

/tmp 1

1000. 1

A 1

All 1

CLASSPATH 1

Command 1

ConnectTimeout=1 1

Default 1

Empty 2

Extra 3

File 1

HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_CLASSPATH= 1

HADOOP_CLIENT_OPTS 1

HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_HEAPSIZE=2000 1

HADOOP_HOME_WARN_SUPPRESS="TRUE" 1

HADOOP_IDENT_STRING=$USER 1

HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_LOG_DIR=${HADOOP_HOME}/logs 1

HADOOP_MASTER=master:/home/$USER/src/hadoop 1

HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_NICENESS=10 1

HADOOP_OPTS 1

HADOOP_OPTS=-server 1

HADOOP_PID_DIR=/var/hadoop/pids 1

HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves 1

HADOOP_SLAVE_SLEEP=0.1 1

HADOOP_SSH_OPTS="-o 1

HADOOP_TASKTRACKER_OPTS= 1

Hadoop-specific 1

JAVA_HOME 1

JAVA_HOME. 1

JAVA_HOME=/home/hadoop/hadoop/jdk1.7.0_67 1

JAVA_HOME=/usr/lib/j2sdk1.5-sun 1

Java 2

MB. 1

NOTE: 1

Optional. 1

Otherwise 1

Required. 1

Seconds 1

See 1

SendEnv=HADOOP_CONF_DIR" 1

Set 1

The 6

This 1

Unset 2

When 1

Where 1

a 3

ace-t 1

amount 1

appended 1

applies 1

are 4

arrive 1

attack. 1

be 4

best 1

between 1

by 9

can 4

clusters, 1

code 1

commands 1

commands. 1

configuration 1

correctly 1

daemon 1

daemons. 1

default. 8

defined 1

dfs, 1

directory 2

distcp 1

distributed 1

e.g., 1

elements. 1

environment 2

etc) 1

export 21

faster 1

file, 1

files 2

following 1

for 2

from. 1

fsck, 1

going 1

hadoop 2

hadoop. 1

heap 1

here. 1

host:path 1

hosts. 1

implementation 1

in 3

instance 1

is 5

it 2

java 1

large 1

log 1

master 1

maximum 1

modify 1

multiple 1

naming 1

nice'. 1

nodes. 1

of 2

on 1

only 2

optional. 1

options 1

options. 2

others 1

otherwise 1

pid 1

potential 1

priority 1

processes. 1

remote 2

representing 1

required 1

rsync'd 1

rsyncs 1

run 1

running 1

runtime 1

scheduling 1

service 1

set 2

should 2

slave 3

sleep 1

so 1

specific 1

specified 1

ssh 1

stored. 2

string 1

symlink 1

than 1

that 3

the 4

them. 1

there 1

this 3

to 9

use, 1

use. 1

useful 1

users 1

variable 1

variables 1

when 1

where 2

where, 1

written 1 

잘 이해가 가지 않더라도 그냥 이런식으로 되어지는구나..라고만 느끼자! 필 충만! 


2. 개발 환경 구성

여기에서는 이클립스와 JDK1.7을 셋팅 해보겠습니다.

  1) eclipse download - 클릭!

  2) JDK download - 클릭!     


참고 : 2014/07/02 - [Language/Java] - Mac에서 Jdk8 설치 되는 장소!


우선 /Users/AceT/app/hadoop 이라는 디렉토리에 ide 디렉토리와 java 디렉토리를 만들었습니다.

AceTui-MacBook-Pro:hadoop AceT$ pwd

/Users/AceT/app/hadoop

AceTui-MacBook-Pro:hadoop AceT$ ls

ide java 



jdk 심볼릭 링크 걸기!(java디렉토리에서)

 ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home hadoop_java1.7


잘걸어져있나 확인!

ls -alr

total 8

lrwxr-xr-x  1 AceT  staff   63  9 15 16:16 hadoop_java1.7 -> /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home

drwxr-xr-x  5 AceT  staff  170  9 15 15:21 ..

drwxr-xr-x  3 AceT  staff  102  9 15 16:16 .


심볼릭 링크 삭제는 rm 명령어를 통해 삭제하면 된다.

ex) rm (심볼릭 링크이름)

     rm hadoop_java1.7


이클립스를 기동 시킨 뒤  환경설정에서 Java쪽을 1.7로 바꿔준다. 디폴트로 1.8로 되어있었음! 

(기존에 1.6, 1.8이 셋팅되어있었기 때문에..이클립스가 그냥 기동되었던것 같다. jdk가 기존에 셋팅이 되어있지 않으신 분들은 셋팅을 해야 합니다. 즉, 터미널에서 java -version 쳤을 때 뭔가 나와야 한다는 것이다.) 


[이클립스 기동]




[환경 설정]

 - Eclipse > 환경설정...


- Java 버전 수정!

  -- Compiler

 

  -- JRE


이제는 maven 프로젝트를 하나 만듭니다.



simple하고 프로젝트를 만들어봅니다.


아래와 같이 hadoop-map-reduce라는 메이븐 프로젝트가 만들어졌습니다.(reduce인데..오타났네요 ㅠ)



자! 이제 대망의 맵리듀스 코딩을 해보겠습니다.

참고자료는 현재 사내스터디 책인 "하둡완벽가이드 개정3판" 으로 하겠습니다.^-^


코딩을 하기전에 input data가 필요 합니다. 그래서 기상 데이터를 분석해보도록 하겠습니다.

사용할 데이터는 국립기후자료센터(NCDC) 입니다. 


책의 부록을 보면 http://hadoopbook.com/code.html 의 사이트를 소개 합니다.

가보면 github 주소를 알려줍니다.goooood~^0^ 

input data : https://github.com/tomwhite/hadoop-book/tree/master/input/ncdc

                         sample.txt를 다운 받으신 뒤 하둡서버에 올려주시면 되겠습니다~

또한 hadoop 명령어 fs -put을 통해서 hdfs에 put을 해놓습니다.

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1$ 

hadoop fs -put input/ncdc/sample.txt input/ncdc/sample.txt


소스 : https://github.com/tomwhite/hadoop-book/tree/master/ch02/src/main/java


이제 이클리스를 기동하시고! 차례대로 따라하시면 됩니다.

1) 이클립스 기동!

2) pom.xml hadoop-core 추가! dependency는 메이븐레파지토리 사이트에서 원하는 jar에 맞게 가져오시면 됩니다.

<dependencies>  

   <dependency>

      <groupId>org.apache.hadoop</groupId>

      <artifactId>hadoop-core</artifactId>

      <version>1.2.1</version>

   </dependency>

</dependencies> 


3) 코딩! 3부분 코딩- Map / Reduce / main




4) jar로 묶기

  4-1) Export 하기


  4-2) jar 만들기 - Java > JAR file 선택



  4-3) jar file명 넣기 - hadoop-acet-example.jar



  4-5) Main class 지정 - 이 설정 때문인지..삽질 좀 했네요 ㅠㅠ 



5) 만들어진 jar를 하둡이 셋팅 된 서버에 옮겨놓습니다.



6) 실행 합니다!

   $hadoop jar hadoop-acet-example.jar input/ncdc/sample.txt output


중요! 아래와 같이 MaxTemperature라는 메인 클래스를 넣었을 때는..동작하지 않았었습니다..

 - 실행 - hadoop jar hadoop-acet-example.jar MaxTemperature input/ncdc/sample.txt output

 - 동작 X - $ hadoop jar hadoop-acet-example.jar MaxTemperature input/ncdc/sample.txt output

                    Usage: MaxTemperature <input path> <output path> 



7) 결과


8) file 확인 - hadoop fs -lsr output


9) file 내용 확인 - hadoop fs -cat /user/dakao/output/part-r-00000


맵-리듀스의 실행동작을 알아보았습니다. 대충 감이 오네요 후후~

하지만 더 중요한 것은!!! 맵과 리듀스의 코드겠죵?! 더더더 중요한 것은 하둡의 핵심인 HDFS와 MapReduce의 아키텍처입죠!

차근차근 이해하면서 제대로 알아가봐야겠네요^0^

그럼 오늘은 여기까쥐~!! 


참고 

1) http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html#Inputs+and+Outputs

2) https://github.com/rgan/hadoop-mapreduce-example

3) https://github.com/tomwhite/hadoop-book/tree/master/input/ncdc

4) 하둡 완벽가이드 개정3판


      - END -

저작자 표시 비영리 변경 금지
신고

'BigDATA > Hadoop' 카테고리의 다른 글

What is MapReduce??  (0) 2014.12.02
부록. 하둡설치(CDH)-클라우데라 배포판  (0) 2014.10.07
04. 하둡 예제 실행 및 코딩해보기!  (0) 2014.09.15
부록. 하둡 설치  (0) 2014.09.11
03. 맵리듀스 시작하기 - 맵-리듀스 개념  (5) 2014.09.01
02. About HDFS..  (0) 2014.08.28

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

부록. 하둡 설치

BigDATA/Hadoop 2014.09.11 01:25
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

하둡을 설치하기전에 해야할 일!

바로 리눅스 설치....

사실 하둡보다 리눅스 설치가 더 힘들었다..


setting~~



result :




환 경 : 맥북 프로 - Parallels

         setting OS - Ubuntu 14.04.1-server-amd64.iso   - 2014.09.04 최신버전!


목표 : 

  • 총 4대 : 네임노드 서버(Hadoop01) 1대, 데이터노드(Hadoop02, Hadoop03, Hadoop04) 3대 
  • openssh setting(Server, Client) - sudo apt-get install openssh-client openssh-server
  • mac에서 터미널로 접근(ssh hadoop01@xx.xx.xx.xx)
  • hadoop 계정 생성(홈디렉토리 지정)
  • Hadoop ver 1.x setting
  • JDK 1.6 이상 setting


1) mac 터미널로 접근을 해보자!

openssh를 설치하지 않으면! 접근 NO~~ - Connection refused!




그러므로 먼저 ssh를 셋팅하자!

sudo apt-get install openssh-client openssh-server



참고 사이트 : 우분투  SSH 셋팅 관련


이제는 하둡을 셋팅하기 위해 계정을 설정 해보자.

2) 하둡 실행 계정 생성

먼저 root로 로그인을 해야하기 때문에 처음 셋팅 시 root의 암호를 지정해줘야한다.

   $ sudo passwd


   root로 로그인하기 su root or su -


   login이후 계정생성!  계정은 반드시!! 전부 dakao로 해주어야한다!!! 그렇지 않으면 ssh 할 때 문제가..ㅠ.ㅠ..

   ex) adduser dakao --home /home/hadoop/hadoop


팁 : 유저변경 후 권한은 chown -R dakao:dakao /home/  이런식으로 하면 다카오계정에 다카오그룹이 홈이하로~


3) 하둡 설치-생성한 계정으로! ex) su dakao

wget을 이용!

wget "http://mirror.apache-kr.org/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz"


압축해제! tar -xvf hadoop-1-2-1.tar.gz


tip) chmod 명령어로 파일 또는 디렉토리 권한 설정을할 수 있음.


4) hosts 설정

root권한으로 /etc/hosts에 아래와 같이 상황에 맞게 수정한다.

10.231.15.1    search-nn-hadoop01

10.231.15.2    search-dn-hadoop02

10.231.15.3    search-dn-hadoop03

10.231.15.4    search-dn-hadoop04


5) 인코딩 확인

인코딩 확인 - utf-8이 아니라면 수정해줘야한다! 

     어디에서? 당근 루뜨로! vi /etc/sysconfig/i18n

     수정 후, source /etc/sysconfig/i18n

dakao01@ubuntu:~/hadoop-1.2.1$ echo $LANG

en_US.UTF-8


6) 자바 설치

명령어로 해보려하였지만..그냥 오라클 사이트가서 다운로드 뒤 파일지라로 업로드 하였음!

/home/hadoop01/hadoop/jdk1.7.0_67


setting 후 .profile에 추가!

export JAVA_HOME=/home/hadoop/hadoop/jdk1.7.0_67

export HADOOP_HOME=/home/hadoop/hadoop/hadoop-1.2.1

export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin


source .profile


적용 후! java -version 과 hadoop을 쳐보면 됩니다.


java -version

dakao01@ubuntu:~$ java -version

java version "1.7.0_67"

Java(TM) SE Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)


hadoop

Warning: $HADOOP_HOME is deprecated.


Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

  namenode -format     format the DFS filesystem

  secondarynamenode    run the DFS secondary namenode

  namenode             run the DFS namenode

  datanode             run a DFS datanode

  dfsadmin             run a DFS admin client

  mradmin              run a Map-Reduce admin client

  fsck                 run a DFS filesystem checking utility

  fs                   run a generic filesystem user client

  balancer             run a cluster balancing utility

  oiv                  apply the offline fsimage viewer to an fsimage

  fetchdt              fetch a delegation token from the NameNode

  jobtracker           run the MapReduce job Tracker node

  pipes                run a Pipes job

  tasktracker          run a MapReduce task Tracker node

  historyserver        run job history servers as a standalone daemon

  job                  manipulate MapReduce jobs

  queue                get information regarding JobQueues

  version              print the version

  jar <jar>            run a jar file

  distcp <srcurl> <desturl> copy file or directories recursively

  distcp2 <srcurl> <desturl> DistCp version 2

  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive

  classpath            prints the class path needed to get the

                       Hadoop jar and the required libraries

  daemonlog            get/set the log level for each daemon

 or

  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.


7) SSH 설정

  - SSH공개키를 생성(ssh-keygen -t rsa) - 명령어 수행 후 엔터신공! enter x 3 :D

dakao01@ubuntu:~$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/hadoop/.ssh/id_rsa): 

Created directory '/home/hadoop01/hadoop/.ssh'.

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/hadoop/hadoop/.ssh/id_rsa.

Your public key has been saved in /home/hadoop01/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

55:cc:3e:f2:50:bf:61:d6:28:fc:73:8d:60:79:0f:56 dakao01@ubuntu

The key's randomart image is:

+--[ RSA 2048]----+

|           o.    |

|           .+   E|

|          .+ o + |

|         .o O X .|

|        S  = X *.|

|            . = +|

|               o |

|                 |

|                 |

+-----------------+

 

공개키는 홈디렉토리 .ssh 폴더에 생성됩니다. 이제 생성된 공개키를 ssh-copy-id 명령어를 이용해 다른 서버에 복사합니다. ssh-copy-id 명령어는 대상 서버의 .ssh 디렉토리안에 있는 authorized_keys파일에 공개키를 입력합니다.


 - ssh-copy-id명령어 수행(우선 범위는 hadoop02)

dakao01@ubuntu:~$ ssh-copy-id -i /home/hadoop/hadoop/.ssh/id_rsa.pub dakao02@search-dn-hadoop02

The authenticity of host 'search-dn-hadoop02 (10.211.55.10)' can't be established.

ECDSA key fingerprint is 93:ba:c4:69:8b:e6:d7:f9:ee:2a:e2:39:5d:88:53:ff.

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

dakao02@search-dn-hadoop02's password: 


Number of key(s) added: 1


Now try logging into the machine, with:   "ssh 'dakao02@search-dn-hadoop02'"

and check to make sure that only the key(s) you wanted were added.


 - dakao02서버에서 확인 - vi로 authorized_keys 확인! 

dakao02@ubuntu:~/.ssh$ ls

 

authorized_keys  id_rsa  id_rsa.pub


 - 테스트!

 search-nn-hadoop01 서버에서 ssh 명령어를 통해 붙어보자! 암호를 묻지 않고 붙는다면 OK!!

dakao01@ubuntu:~$ ssh search-dn-hadoop02

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)


 * Documentation:  https://help.ubuntu.com/


  System information as of Wed Sep  3 23:00:02 PDT 2014


  System load:  0.0               Processes:           160

  Usage of /:   3.0% of 61.88GB   Users logged in:     1

  Memory usage: 12%               IP address for eth0: ip가 나오지용!

  Swap usage:   0%


  Graph this data and manage this system at:

    https://landscape.canonical.com/


dakao02@ubuntu:~$ 


서로서로 전부 복사를 해줘야한다. 확인은 암호를 입력하지 않아도 쌍방향으로 서로 SSH에 접속이 되는지 보면 된다.

즉, authorized_keys 파일에는 자기자신을 포함 모든 키 정보가 들어가있어야 한다!


8) 하둡 환경설정 파일 수정!

    설치 작업의 끝이 보이는군요~~~ㅎㅎㅎㅎ

    슈퍼맨 서버 한대에 설정을 합니다! 그런 뒤에 압축해서 다른 서버에서 사용하도록 합니다.^-^b

              

    

 파일명

 용 도

 hadoop-env.sh

 하둡을 실행하는 쉘 스크립트 파일에서 필요한 환경 변수를 설정

 하둡 홈 디렉토리 아래에 있는 bin 디렉토리에 있는 쉘 스크립트 파일이 hadoop-env.sh를 사용합니다. 

 이 파일에는 JDK경로, ClassPath, 데몬 실행 옵션 등 다양한 환경변수를 설정할 수 있습니다.

 masters 

 보조 네임노드를 실행할 서버를 설정합니다.

 slaves

 데이터노드를 실행할 서버를 설정합니다. 

 core-site.xml

 HDFS맵-리듀스에서 공통적으로 사용할 환경 정보를 설정!

 hadoop-core-1.2.1.jar에 포함돼 있는 core-default.xml을 오버라이딩한 파일입니다.

 core-site.xml에 설정값이 없을 경우, core-default.xm에 있는 기본값을 사용합니다.

 hdfs-site.xml

 HDFS에서 사용할 환경 정보를 설정합니다. 

 hadoop-core-1.2.1.jar에 포함돼 있는 hdfs-default.xml를 오버라이딩한 파일 입니다. 

 hdfs-site.xml에 설정값이 없을 경우. hdfs-default.xml에 있는 기본값을 사용합니다.

 mapred-site.xml

 맵-리듀스에서 사용할 환경정보를 설정합니다. 

 hadoop-core-1.2.1.jar에 포함돼 있는 mapred-default.xml을 오버라이드한 파일입니다. 

 mapred.site.xml에 설정값이 없을 경우, mapred-default.xml에 있는 기본값을 사용합니다.


 - hadoop-env.sh 수정

   JDK_HOME  파라미터를 실제 JDK가 설치된 경로로 수정합니다.

   열어보시면 주석으로 막혀있습니다. 

   기존 :

    # The java implementation to use.  Required.

  # export JAVA_HOME=/usr/lib/j2sdk1.5-sun


   추가 :

   # modify ace-t

 export JAVA_HOME=/home/hadoop/hadoop/jdk1.7.0_67

  

  hadoop-env.sh에는 다양한 옵션들을 설정할 수 있습니다. 이 부분은 우선은 pass~~

  책 - 34~35page! 에 나와있습니다. 참고하세요^-^/


  - masters 수정

    masters 파일에는 보조 네임노드를 실행할 서버를 설정합니다.

    2개 이상의 보조 네임노드를 설정할 수 있으며, 한 줄에 하나의 서버를 기재하면 됩니다.

    서버는 호스트명 혹은 IP로 기재!


    현재 서버는 4대이며, 아래와 같이 구성해보도록 하겠습니다.

    search-nn-hadoop01 - 네임노드

    search-dn-hadoop02 - 보조 네임노드 겸 데이터노드

    search-dn-hadoop03 - 데이터 노드

    search-dn-hadoop04 - 데이터 노드


  - slaves 수정

    데이터노드를 실행할 서버를 설정! 2개 이상의 데이터노드를 설정할 수 있으며, 한줄에 하나의 서버를 기재하면 됩니다.

    서버는 호스트명 혹은 IP로 기재!


  - core-site.xml 수정

 fs.default.name과 hadoop.tmp.dir 속성을 추가하고, 다른 속성들은 core-default.xml에 있는 기본값을 사용!    

<configuration> 

 <property>

   <name>fs.default.name</name>

   <value>hdfs:search-nn-hadoop01:9000</value>

 </property>

 <property>

   <name>hadoop.tmp.dir</name>

   <value>/home/hadoop/hadooap/hadoop-data/

 </property>

</configuration>


fs.default.name : 데이터노드는 여러 작업을 진행하기 위해 반드시 네임노드의 주소를 알고 있어야 합니다.

                        예를 들어 네임노드로 하트비트나 블록 리포트를 보낼 때 바로 이값을 참조해서 네임노드를 호출 합니다.

hadoop.tmp.dir : 하둡에서 발생하는 임시 데이터를 저장하기 우한 공간 입니다. 

attempt-xxxx, history..등등  MR작업 등 하둡에서 무엇인가 동작할 때 아직은 잘모르겠지만 로그성 같은 저장 합니다.


 - hdfs-site.xml 수정

   dfs.replication : 이 친구는 HDFS의 저장될 데이터의 복제본 개수를 의미 합니다.

   dfs.http.address : 네임노드용 웹서버의 주소값입니다. 기본값은 0.0.0.0:50070으로 설정돼 있습니다.

   완전 분산 모드로 설치할 경우 반드시 이 속성을 설정해야 합니다.

   이 속성이 없으면 보조 네임노드가 네임노드에 접속하지 못하기 때문 입니다.

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>3</value>

  </property>

  

  <property>

    <name>dfs.http.address</name>

    <value>search-nn-hadoop01:50070</value>

  </property>

  

  <property>

    <name>dfs.secondary.http.address</name>

    <value>search-dn-hadoop02:50090</value>

  </property>

</configuration>


 - mapred-site.xml 수정

   mapred.job.tracker 속성을 추가하며,아래와 같이 작성 되어집니다.

   또한 잡트래커(JobTrakcer) 데몬의 주소를 의미하며, 데이터노드에서 이 주소로 맵-리듀스 작업을 요청하게 됩니다.

<configuration>

  <property>

    <name>mapred.job.tracker</name>

    <value>search-nn-hadoop01:9001</value>

  </property>

</configuration>


여기까쥐~!! 한대의 서버에다가 설정을 하였습니다. 이제는 압축을 한 뒤에 각각의 서버에 복사 해보도록 하겠습니다!


9) 압축하기

dakao01@ubuntu:~$ tar cvfz hadoop-1.2.1.tar.gz hadoop-1.2.1/


10) 각 서버에 복사하기(SCP명령어 사용)

scp [원본경로] [전송될 서버의 계정@전송될 호스트명:전송될 디렉토리]

dakao01@ubuntu:~$ scp hadoop-1.2.1.tar.gz dakao02@search-dn-hadoop02:/home/hadoop02/hadoop

hadoop-1.2.1.tar.gz 


각 서버 search-dn-hadoop02, search-dn-hadoop03search-dn-hadoop04에 전송한다!


11) 압축 해제! (원본을 가지고 있는 서버에서 수행하시면 됩니다.)

ssh dakao@search-dn-hadoop03 "cd /home/hadoop03/hadoop; tar xvzf hadoop-1.2.1.tar.gz; chmod -R 775 hadoop-1.2.1/"


12) 전송 및 압축 해제가 잘되었는지 확인하고! 위에서 언급하였던 core-site.xml에서 경로부분을 수정하여 줍니다.

   음...hadoop01, hadoop02, hadoop03, hadoop04이런식이 아닌 hadoop으로 경로를 맞춰주면 더 편하겠네요!

   ex) 아래의 value부분의 서버에 맞게 경로를 맞춰줍니다.

   <name>hadoop.tmp.dir</name>

   <value>/home/hadoop02/hadooap/hadoop-data/


13) 마지막으로 .profile의 내용이 안먹히는 현상이 있다면 source .profile를 해줍니다.

      java -version or hadoop 등 명령어 수행 해보신 뒤에 말이죠!^^;


14) 하둡 실행 전 해야할 일!

리눅스에서 실행 중인 방화벽 서비스를 종료해야 합니다. 하둡의 여러 데몬들은 특정 포트로 RPC또는 HTTP통신을 하게 됩니다. 방화벽은 기본적인 포트를 제외하고 대부분 포트를 차단하고 있기 때문에 하둡이 정상적으로 실행되지 않을 수 있습니다.

그래서 실행 중인 방화벽 서비스를 정지하고, 서버가 부팅할 때도 방화벽이 실행되지 않도록 chkconfig명령어를 실행해야 합니다. root권한으로 실행해야 합니다. 반드시!


   (1) service iptables stop

ubuntu에서는 명령어가 조금 달랐다. 루트로 접속한 뒤에 ufw status는 상태를!(inactive : stop, active : ing)

ufw disable은 정지를! ufw enable은 시작을! 

(참고 http://www.cyberciti.biz/faq/ubuntu-start-stop-iptables-service/ )

root@ubuntu:/home/hadoop01/hadoop# sudo ufw status    - 방화벽 상태

Status: inactive

root@ubuntu:/home/hadoop01/hadoop# sudo ufw disable

Firewall stopped and disabled on system startup


   (2) chkconfig iptables off

ubuntu는 이것 역시 달랐다!


찾아봤더니..sysv-rc-conf라는 것이 있었다.

(참고 : http://askubuntu.com/questions/221293/why-is-chkconfig-no-longer-available-in-ubuntu)


install : sudo apt-get install sysv-rc-conf


설치 후 sysv-rc-conf --list  or sysv-rc-conf --list iptalbes 을 보면 현황을 알수있다.

sysv-rc-conf iptables off를 하면 off가 되어진다.

root@ubuntu:/home/hadoop01/hadoop# sysv-rc-conf iptables off

root@ubuntu:/home/hadoop01/hadoop# sysv-rc-conf --list iptables

iptables     2:off 3:off 4:off 5:off


15) 하둡 실행!(실행하기 빡세군요..ㄷㄷ)

 루트에서 다시 원래의 계정으로 돌아오신 뒤에 /home/hadoop01/hadoop/hadoop-1.2.1/bin 의 hadoop을 실행시켜 보면 아래와 같은 정보를 볼 수 있습니다.

dakao01@ubuntu:~/hadoop-1.2.1/bin$ ./hadoop

Warning: $HADOOP_HOME is deprecated.


Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

  namenode -format     format the DFS filesystem

  secondarynamenode    run the DFS secondary namenode

  namenode             run the DFS namenode

  datanode             run a DFS datanode

  dfsadmin             run a DFS admin client

  mradmin              run a Map-Reduce admin client

  fsck                 run a DFS filesystem checking utility

  fs                   run a generic filesystem user client

  balancer             run a cluster balancing utility

  oiv                  apply the offline fsimage viewer to an fsimage

  fetchdt              fetch a delegation token from the NameNode

  jobtracker           run the MapReduce job Tracker node

  pipes                run a Pipes job

  tasktracker          run a MapReduce task Tracker node

  historyserver        run job history servers as a standalone daemon

  job                  manipulate MapReduce jobs

  queue                get information regarding JobQueues

  version              print the version

  jar <jar>            run a jar file

  distcp <srcurl> <desturl> copy file or directories recursively

  distcp2 <srcurl> <desturl> DistCp version 2

  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive

  classpath            prints the class path needed to get the

                       Hadoop jar and the required libraries

  daemonlog            get/set the log level for each daemon

 or

  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.


네임노드를 초기화 시키는 작업을 해보겠습니다.


./hadoop namenode -format


오류내역


위의 오류는 확인해보니... </value>를 해주지 않았었네요ㅠㅠ


다시 수행해보겠습니다.

dakao01@ubuntu:~/hadoop-1.2.1/bin$ ./hadoop namenode -format

Warning: $HADOOP_HOME is deprecated.


14/09/04 21:41:39 INFO namenode.NameNode: STARTUP_MSG: 

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG:   host = ubuntu/127.0.1.1

STARTUP_MSG:   args = [-format]

STARTUP_MSG:   version = 1.2.1

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013

STARTUP_MSG:   java = 1.7.0_67

************************************************************/

14/09/04 21:41:39 INFO util.GSet: Computing capacity for map BlocksMap

14/09/04 21:41:39 INFO util.GSet: VM type       = 64-bit

14/09/04 21:41:39 INFO util.GSet: 2.0% max memory = 1013645312

14/09/04 21:41:39 INFO util.GSet: capacity      = 2^21 = 2097152 entries

14/09/04 21:41:39 INFO util.GSet: recommended=2097152, actual=2097152

14/09/04 21:41:39 INFO namenode.FSNamesystem: fsOwner=dakao01

14/09/04 21:41:39 INFO namenode.FSNamesystem: supergroup=supergroup

14/09/04 21:41:39 INFO namenode.FSNamesystem: isPermissionEnabled=true

14/09/04 21:41:40 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

14/09/04 21:41:40 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

14/09/04 21:41:40 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0

14/09/04 21:41:40 INFO namenode.NameNode: Caching file names occuring more than 10 times 

14/09/04 21:41:40 INFO common.Storage: Image file /home/hadoop01/hadooap/hadoop-data/dfs/name/current/fsimage of size 113 bytes saved in 0 seconds.

14/09/04 21:41:40 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/home/hadoop01/hadooap/hadoop-data/dfs/name/current/edits

14/09/04 21:41:40 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/home/hadoop01/hadooap/hadoop-data/dfs/name/current/edits

14/09/04 21:41:40 INFO common.Storage: Storage directory /home/hadoop/hadooap/hadoop-data/dfs/name has been successfully formatted.

14/09/04 21:41:40 INFO namenode.NameNode: SHUTDOWN_MSG: 

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1

************************************************************/


위에보시면 /home/hadoop/hadooap/hadoop-data/dfs/name has been successfully formatted.라고 나오시면 됩니다!

초기화 완료!


이제는 bin디렉토리에 있는 start-all.sh를 통해 하둡과 관련된 모든 데몬을 실행시켜 보겠습니다.

slaves 파일과 ssh 공개키 설정이 제대로 됐다면 데이터노드용 서버에서 데이터노드와 태스크트래커 데몬을 각각 실행 합니다. 


매우 중요!!

error01) 계정과 홈디렉토리를 구분이 되게끔 하려고했으나..아래처럼..찾지 못하는 현상이 있으므로..계정과 홈디렉토리는 각 서버마다 맞춰줘야 합니다.!!

dakao@ubuntu:~/hadoop-1.2.1/bin$ ./start-all.sh

starting namenode, logging to /home/hadoop01/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-namenode-ubuntu.out

search-dn-hadoop02: bash: line 0: cd: /home/hadoop01/hadoop/hadoop-1.2.1/libexec/..: No such file or directory

search-dn-hadoop02: bash: /home/hadoop01/hadoop/hadoop-1.2.1/bin/hadoop-daemon.sh: No such file or directory


error02) java.io.IOException: Incomplete HDFS URI, no host: 네임노드, 데이터노드 안뜨는 현상!

/home/hadoop/hadoop/hadoop-1.2.1/conf 에서 core-site.xml 부분에...잘못 적었다!! -0-;;

<configuration>

 <property>

   <name>fs.default.name</name>

   <value>hdfs://search-nn-hadoop01:9000</value> - good hdfs:// 인데..hdfs:로 해놨었다..ㅠ.ㅠ..

 </property>

 <property>

   <name>hadoop.tmp.dir</name>

   <value>/home/hadoop/hadoop/hadoop-data/</value>

 </property>

</configuration>


위와같이 올바르게 작성한 뒤 다시!!! hadoop namenode -format이라는 것을 통해 다시 빌드 시켜줘야한다!!! 



결과

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1/bin$ ./start-all.sh 

Warning: $HADOOP_HOME is deprecated.  <-- 요녀석이 안뜰려면 hadoop-env.sh 에서 export HADOOP_HOME_WARN_SUPPRESS="TRUE" 를 export해주면 된다.


starting namenode, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-namenode-ubuntu.out

search-dn-hadoop02: starting datanode, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-datanode-ubuntu.out

search-dn-hadoop03: starting datanode, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-datanode-ubuntu.out

search-dn-hadoop04: starting datanode, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-datanode-ubuntu.out

search-dn-hadoop02: starting secondarynamenode, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-secondarynamenode-ubuntu.out

jobtracker running as process 3927. Stop it first.

search-dn-hadoop04: starting tasktracker, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-tasktracker-ubuntu.out

search-dn-hadoop02: starting tasktracker, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-tasktracker-ubuntu.out

search-dn-hadoop03: starting tasktracker, logging to /home/hadoop/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-dakao-tasktracker-ubuntu.out



잘 떴나 확인!

 - 네임노드 서버에서 jps명령어를 통해 NameNode와 JobTracker를 확인!

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1/bin$ jps

7114 Jps

6824 NameNode

7004 JobTracker


 - 데이터노드 서버에서 jps명령어를 통해 DataNode와 TaskTracker 등을 확인!

dakao@ubuntu:/home/hadoop/hadoop/hadoop-1.2.1/conf$ jps

7165 TaskTracker

6913 DataNode

7248 Jps

7038 SecondaryNameNode


 - END -

            





저작자 표시 비영리 변경 금지
신고

'BigDATA > Hadoop' 카테고리의 다른 글

부록. 하둡설치(CDH)-클라우데라 배포판  (0) 2014.10.07
04. 하둡 예제 실행 및 코딩해보기!  (0) 2014.09.15
부록. 하둡 설치  (0) 2014.09.11
03. 맵리듀스 시작하기 - 맵-리듀스 개념  (5) 2014.09.01
02. About HDFS..  (0) 2014.08.28
01. 하둡 소개  (0) 2014.08.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

02. About HDFS..

BigDATA/Hadoop 2014.08.28 20:04
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

목차

HDFS 기초

HDFS 아키텍처

HDFS 명령어 사용

정리

HDFS 기초

HDFS는 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템 입니다.

HDFS과 기존 대용량 파일 시스템(DAS, NAS, SAN)의 가장 큰 차이점은 저사양 서버를 이용해 스토리지를 구성할 수 있다는 것 입니다.

HDFS는 다음과 같이 네 가지 목표를 가지고 설계됐습니다.

1) 장애 복구

     HDFS를 구성하는 분산 서버는 다양한 장애가 발생할 수 있습니다. 그러나 장애를 빠른 시간에 감지하고, 대처할 수 있게 설계돼 있습니다.(Really??)

     HDFS는 데이터를 저장하면, 복제 데이터도 함께 저장해서 데이터 유실을 방지! 또한 분산 서버 간에는 주기적으로 상태를 체크해 빠른 시간에 장애를 인지하고, 대처할 수 있게 도와줍니다.

2) 스트리밍 방식의 데이터 접근

    HDFS에 파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터에 접근해야 합니다.

    기존의  파일 시스템은 사용자가 빠르게 데이터에 접근하는 것을 목표로 하지만, HDFS는 기존 파일 시스템들과는 달리 배치 작업에 적합하도록 설계돼 있고, 낮은 데이터 접근 지연 시간보다는 높은 데이터 처리량에 중점을 두고 있습니다.

Tip. Hadoop Streaming - 하둡 스트리밍

Hadoop streaming is a utility that comes with the Hadoop distribution. The utility allows you to create and run Map/Reduce jobs with any executable or script as the mapper and/or the reducer. For example:

발번역..(big grin) => 하둡 스트리밍은 하둡배포에 딸려있는 하나의 유틸리티 입니다.  이 유틸리티는 당신이 어떤 실행 가능한 것이나 스크립트를 가지고 mapper나 또는 reducer를 생성하거나 Map/Reduce jobs를 실행 시킬수 있습니다. 예를 들어서:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \ -input myInputDirs \ -output myOutputDir \ -mapper /bin/cat \ -reducer /bin/wc

참고 URL : http://hadoop.apache.org/docs/r1.2.1/streaming.html#Hadoop+Streaming

 3) 대용량 데이터 저장

     HDFS는 하나의 파일이 기가바이트에서 테라바이트 이상의 사이즈로 저장될 수 있게 설계 됐습니다. 높은 데이터 전송 대역폭과 하나으 ㅣ클러스터에서 수백 대의 노드를 지원할 수 있어야 합니다. 또한 하나의 인스턴스에서는 수백만 개 이상의 파일을 지원 합니다.

4) 데이터 무결성

    HDFS는 한번 저장한 데이터는 더는 수정할 수 없고, 읽기만 가능하게 해서 데이터 무결성을 유지 합니다. 데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스는 제공합니다. Hadoop 2.0 알파ver 부터는 HDFS에 저장된 파일에 append가 제공.

HDFS 아키텍처

 1) HDFS는?

     -  블록 구조의 파일 시스템 입니다.

     - HDFS에 저장하는 파일은 특정 사이즈의 블록으로 나눠져 분산된 서버에 저장 됩니다.

     - 블록 사이즈는 기본적으로 64MB로 설정되어있고 변경이 가능 합니다.

     - 여러 개의 블록은 동일한 서버에 저장되는 것이 아니라 여러 서버에 나눠서 저장 됩니다.

★ 왜 64MB 인가?? 외국인형이 stackoverflow에 질문 올린 글! 참조~

   HDFS blocks are large compared to disk blocks, and the reason is to minimize the cost of seeks

   발번역 (big grin) - HDFS 블록들은 디스크 블록들과 비교했을 때 크다. 그리고 이유는 최저의 비용으로 찾을 수 있다는 것이다.


 

그림_a) HDFS의 파일 복제 구조

 

 

 

320MB의 파일을 HDFS에 저장했을 때 블록이 복제되는 것을 나타낸 그림 입니다. 

파일은 다섯 개의 블록으로 분리 된 후, 블록당 3개씩 HDFS에 저장돼 있습니다. 

HDFS는 블록을 저장할 때 기본적으로 3개씩 블록의 복제본을 저장 합니다.(default) 

역시나! HDFS의 블록사이즈처럼 복제본의 수도 하둡 환경 설정 파일에서 수정할 수 있습니다. 

어떻게 복제가 되는지는 뒷부분에 자세히 다루도록 하겠습니다.^0^~good~ 

복제단위는 위와같이 블록단위라는것만 기억하도록 합시다!

 

 2) 네임노드(NameNode)와 데이터 노드 (DataNode)

HDFS는 마스터(Master)-슬레이브(Slave) 아키텍처로 구성 됩니다. 

즉, 마스터 역할을 하는 네임노드(NameNode)서버가 한대, 슬레이브 역할을 하는 데이터노드(DataNode) 서버가 여러 대로 구성 됩니다. 

그림을 보기전에 용어와 역할을 조금 살펴보면.. 

 - 네임노드 :  HDFS의 모든 메타데이터를 관리하고, 클라이언트가 HDFS에 저장된 파일에 접근 할 수 있게 함.(접근 가능케하는 정보가 있겠죵?-디렉토리명, 파일명 등) 

 - 데이터노드 : HDFS에 저장할 때 블록으로 나눠진 데이터는 여러 대의 데이터노드에 분산저장 됨. 

 - 애플리케이션 : 사용자가 구현한 애플리케이션은 HDFS에 파일을 저장하거나. 저장된 파일을 읽기 위해 HDFS 클라이언트(이하 클라이언트)를 사용하며, 클라이언트 API 형태로 사용자에게 제공 됩니다.  

 - RACK : Hadoop data nodes (servers) are installed in racks. Each rack typically contains multiple data node servers with a top of rack switch for network communication. 

               “Rack awareness” means that the name node knows where each data node server is and in which rack. 

              영어라서 당황 스러우셨죠? 발번역 -  하둡 데이터노드들은 rack에 설치가 되어져있습니다. 

               각각의 rack은 보통 네트워크 통신을 하기 위한 상위 rack switch에 여러개의 데이터노드들로 구성되어져있습니다.

              "Rack awareness"는 노드네임이 각 rack의 데이터노드서버들이 어디에 있는지 아는 의미 입니다.

 

   참고 사이트 : http://www.ibmbigdatahub.com/blog/running-hadoop-cloud 

                         http://wiki.apache.org/hadoop/topology_rack_awareness_scripts

 

자! 아래의 네임노드 관련 그림을 보시면!

그림_b) HDFS 아키텍처

 

 

네임노드와 데이터노드의 구조를 살펴보았습니다.

 

3) 파일 저장

이제 전체 아키텍처를 알았으니 조금 detail하게 HDFS에 파일을 저장할 때의 동작 방식을 알아보겠습니다.

 우선 그림_c를 보도록 하겠습니다.

 

그림_c) HDFS의 파일 저장 과정

 

 

 

 1) 사용자가 개발한 프로그램인 애플리케이션이 클라이언트에게 파일 저장을 요청합니다.

 2) 클라이언트는 네임노드에게 사용자가 요청한 파일 경로를 생성할 것을 요청합니다.

 2-1) 네임노드는 해당 파일 경로가 기존에 존재할 경우 에러 처리를 합니다. 기존에 존재하지 않는 파일 경로라면 메모리에 파일 경로를 생성한 후, 다른 클라이언트가 해당 경로를 수정하지 못하게 락(lock)을 겁니다.

 3) 네임노드는 클라이언트에게 해당 파일을 저장할 데이터노드의 목록을 반환 합니다. 이러한 데이터노드의 목록은 하나의 파이프라인을 형성합니다. 파이프라인에는 HDFS의 환경설정 파일에 설정된

     블록의 복제 개수(dfs.replication)만큼 데이터노드가 들어 있습니다.

 4) 클라이언트는 첫 번째 데이터노드에게 데이터를 전송합니다.

 5) 첫번째 데이터노드는 전송받은 데이터를 로컬 디스크에 저장한 후, 두번째 데이터노드로 데이터를 전송합니다. 두번째 데이터노드도 전송받은 데이터를 로컬에 저장한 후, 세 번째 데이터노드로 데이터를 전송합니다.

     세번째 데이터도 전송받은 데이터를 로컬 디스크에 저장합니다.

 6) 첫 번째 데이터노드는 클라이언트에게 파일 저장이 완료됐음을 응답합니다.

 7) 클라이언트는 애플리케이션에게 파일 저장이 완료됐음을 응답합니다.

 

Q) 파이프라인 형성이라함은?

     How? 디자인 패턴 중 Chain of responsibility Pattern으로 구현이 되어있을라나?? 네임노드의 메타데이터(conf)를 가지고??

 

4) 파일 읽기

  이제는 HDFS에 저장된 파일을 어떠한 방식으로 읽게 되는지 알아보겠습니다. 그림_d 참조!

 

그림_d)

 

 

    1) 사용자가 개발한 프로그램인 애플리케이션이 클라이언트에게 파일 읽기를 요청 합니다.

    2) 클라이언트는 네임노드에게 애플리케이션이 요청한 파일이 어떤 블록에 저장돼 있는지 블록의 위치 정보를 요청 합니다.

    3) 네임노드는 메타데이터에서 요청된 파일의 복제 블록이 저장된 위치를 확인한 후 해당 데이터노드의 목록을 반환 합니다.

        이때 데이터노드의 목록은 요청 중인 클라이언트와 가까운 순서대로 정렬해서 반환 됩니다. 만약 클라이언트가 데이터노드라면 클라이언트는 로컬에 있는 파일을 읽게 됩니다.

        Q) 가까운 순서의 기준은???? 데이터노드에서 다른 데이터노드를 접근한다는 말??? 갑자기 클라이언트가 데이터노드라면..에서 헷깔리는 문구 임.

    4) 클라이언트는 데이터노드에게 블록을 조회할 것을 요청합니다.

    5) 데이터노드는 클라이언트에게 요청한 데이터를 전송합니다.

    6) 클라이언트는 애플리케이션에게 전송받은 데이터를 전달합니다.

 

5) 보조 네임노드(Secondary Name Node)

HDFS에서 보조 네임노드라는 친구가 있습니다.  왜 보조 네임노드가 나왔을까요? 네임노드에 무슨 문제가????

네임노드는 HDFS의 메타데이터를 관리하기 위해 에디트(EditLog)와 파일 시스템 이미지(FsImage)파일을 사용합니다.

    •  에디트 로그는 HDFS의 메타데이터에 대한 모든 변화(저장,삭제, 파일 위치 변경 등)를 기록하는 로그 파일 입니다.
      또한 에디트 로그는 용량에 제한 없이 커질 수 있으며, 네임노드의 로컬 파일 시스템에 파일로 저장 됩니다.
    • 파일 시스템 이미지 파일은 파일 시스템의 네임스페이스(디렉토리명, 파일명, 상태정보)와 파일에 대한 블록 매핑 정보를 저장하는 파일입니다.
      한마디로 표현하면 HDFS의 스냅샷 이라고 할 수 있습니다. 파일 시스템 이미지도 에디트 로그처럼 네임노드의 로컬 파일 시스템에 파일로 저장 됩니다.

그렇다면 네임노드는 메타데이터를 관리하기 위해 위의 두파일을 어떻게 사용할까요???

네임노드는 파일 시스템의 네임스페이스(디렉토리명, 파일명, 상태정보)와 블록 매핑 정보를  메모리에서 유지하며, 네임노드가 구동할 경우 다음과 같은 단계로 파일 시스템 이미지 파일과 에디트 로그를 사용 합니다.

    1. 네임노드가 구동되면 로컬에 저장된 파일 시스템 이미지 파일과 에디트 로그 파일을 조회.
    2. 에디트 로그 파일에 있는 내용을 토대로 메모리에 올라와 있는 파일 시스템 이미지를 갱신.(메모리 갱신)
    3. 메모리에 올라와 있는 파일 시스템 이미지를 로컬 파일에 있는 파일 시스템 이미지 파일에 적용.(로컬 갱신)
    4. 에디트 로그 파일을 초기화.

앞서 에디트 로그의 파일은 용량에 제한 없이 커질 수 있다고 하였습니다. 만약 에디트 로그 파일이 너~~~무 크다면 2번 단계에서 진행할 때 많은 시간이 소용될 것 입니다.

또한 파일 시스템 이미지 파일을 파일에 변경이 있을 때마다 갱신한다면 파일 시스템 이미지 파일은 기가바이트 이상으로 커지게 되며, 메모리에 로딩하지 못하는 사태가 일어날 수도 있습니다.

이러한 문제를 해결하기 위해 HDFS는 보조 네임노드를 사용 합니다.

보조 네임노드주기적으로 네임노드의 파일 시스템 이미지 파일을 갱신(메모리, 로컬 갱신)하는 역할을 하며, 이러한 작업을 체크포인트(Check Point)라고 합니다.

※ 보조 네임노드를 체크포인팅 서버라고 표현하기도 함.

 

그림_f) 보조 네임노드의 체크포인팅 단계

 

 

 

 1) 보조 네임노드는 네임노드에게 에디트 로그 파일을 롤링할 것을 요청.

    ※ 로그롤링은 현재 로그파일의 이름을 변경하고, 원래 이름으로 새 로그 파일을 만드는 것 입니다.

 2) 네임노드는 기존 에디트 로그 파일을 롤링한 후, 새로운 에디트 로그 파일을 생성.

 3) 보조 네임노드는 롤링된 에디트 로그 파일과 파일 시스템 이미지 파일을 다운로드 합니다.

 4) 보조 네임노드는 기존 파일 시스템 이미지 파일을 메모리에 올리고, 에디트 로그 파일에 있는 로그를 메모리에 올라와 있는 파일 시스템 이미지에 갱신. 

     갱신이 완료되면 새로운 파일 시스템 이미지 파일이 생성되며, 이 파일이 체크포인트용으로 사용 됩니다.(병합)

 5) 보조 네임노드는 체크포인트용 파일 시스템 이미지 파일을 네임노드에게 전송.

 6) 네임노드는 기존의 파일 시스템 이미지 파일을 체크포인트용 파일 시스템 이미지 파일로 롤링!

     또한 에디트 로그 파일도 2단계에서 생성된 에디트 로그 파일로 변경합니다.

 

 체크포인팅이 완료되면 파일 시스템 이미지 파일은 최신 내역으로 갱신되며, 에디트 로그 파일의 크기고 축소 됩니다.

 체크 포인팅은 1시간마다 한번씩 일어나며, 하둡 환경설정 파일에서 fs.checkpoint.period 속성값을 수정해서 제어할 수 있습니다.

 보조 네임노드는 네임노드의 파일 시스템 이미지를 축소 시켜주는 역할을 담당하지, 백업 서버가 아닙니다!

 

HDFS 명령어 사용

하둡은 사용자가 HDFS를 쉽게 제어할 수 있게 쉘 명령어를 제공 합니다. 이 쉘 명령어는 FileSystem Shell(이하 fs 쉘) 이라고 하며, 다음과 같은 형식으로 하둡 홈 디렉토리에서 실행할 수 있습니다.

./bin/hadoop fs -cmd [args] 

cmd는 사용자가 설정한 명령어이고, args는 해당 명령어를 실행할 때 필요한 파라미터를 의미 합니다.

fs쉘에서 어떤 명령어가 제공되는지는 "hadoop fs -help"라고 입력하면 확인할 수 있습니다.

 

명령어

명령어내용사용법비고
    파일 목록 보기 - ls, lsr
ls현재 디렉토리만을 출력./bin/hadoop fs -ls [디렉토리|파일...] 
lsr현재 디렉토리의 하위 디렉토리 정보까지 출력./bin/hadoop fs -lsr [디렉토리|파일...] 
   파일 용량 확인 - du, dus
 du 지정한 디렉토리나 파일의 사용량을 확인,
 바이트 단위로 결과를 출력!
./bin/hadoop fs -du 
 dus 전체 합계 용량만 출력./bin/hadoop fs -dus <디렉토리/파일...>경로를 지정하지 않을 경우, 사용자 계정의 홈 디렉토리에 있는
모든 디렉토리의 사용량을 합산해서 출력
 파일 내용 보기 - cat, text
cat  지정한 파일의 내용을 화면에 출력./bin/hadoop fs -cat [파일...] 텍스트 파일만 출력할 수 있습니다.
text 지정한 파일의 내용을 화면에 출력./bin/hadoop fs -text [파일...]zip파일 형태로 압축된 파일도 텍스트 형태로 화면에 출력 
 파일 복사 - put, get, getmerge, cp, copyFromLocal, copyToLocal    
 put지정한 로컬 파일 시스템의 파일 및 디렉토리를
목적지 경로로 복사합니다.
 ./bin/hadoop fs -put [로컬 디렉토리|파일...] [목적지 디렉토리|파일...] 
 copyFromLocalput 명령어와 동일한 기능을 제공.  ./bin/hadoop fs -copyFromLocal[로컬 디렉토리|파일...] [목적지 디렉토리|파일...] 
getHDFS에 저장된 데이터를
로컬 파일 시스템으로 복사
  ./bin/hadoop fs -get<ignoreCrc> <-crc> [소스 디렉토리|파일...] [로컬 디렉토리|파일...]
※ -crc 옵션을 사용하면 로컬 파일 시스템에 체크섬 파일도 복사 됨.
     -ignoreCrc 옵션을 사용하면 해당 파일의 체크섬을 확인하지 않음.
HDFS는 파일의 무결성을 확인하기 위해 체크섬(checksum) 기능을
사용하는데, 체크섬을 숨김파일로 저장하고, 해당 파일을 조회할 때
체크섬을 사용해 무결성을 확인. 
 getmerge지정한 경로에 있는 모든 파일의 내용을 합친 후,
로컬 파일 시스템에 단 하나의 파일로 복사.
./bin/hadoop fs -getmerge [소스 디렉토리|파일...] [로컬 파일명] 
 cp지정한 소스 디렉토리 및 파일을 목적지 경로로
복사하는 기능을 제공.
./bin/hadoop fs -cp [소스 디렉토리|파일...] [목적지 디렉토리|파일] 
 copyToLocal get 명령어와 동일한 기능을 제공../bin/hadoop fs -copyToLocal<ignoreCrc> <-crc> [소스 디렉토리|파일...] [로컬 디렉토리|파일...]   
 디렉토리 생성 - mkdir   
 mkdir지정한 경로에 디렉토리를 생성할 수 있음../bin/hadoop fs -mkdir [디렉토리]HDFS에 이미 존재하는 디렉토리를 생성할 경우 오류가 발생. 
 파일 이동 - mv, moveFromLocal  
 mv소스 디렉토리 및 파일을 목적지 경로로 옮김. ./bin/hadoop fs -mv [소스 디렉토리|파일...] [목적지 디렉토리|파일]여러 개의 파일을 이동시킬 경우, 반드시 목적지 경로를
디렉토리로 설정해야 함.
 moveFromLocalput 명령어와 동일하게 동작하지만
로컬 파일 시스템으로 파일이 복사된 후 소스 경로의
파일은 삭제 됨.
 ./bin/hadoop fs -moveFromLocal [소스 디렉토리|파일...] [로컬디렉토리|파일] 
 파일 삭제하기 - rm
 rm지정한 디렉토리나 파일을 삭제 함. ./bin/hadoop fs -rm [디렉토리|파일...]  디렉토리는 반드시 비어 있는 경우에만 삭제할 수 있음.
 디렉토리 삭제하기 - rmr   
 rmr지정한 파일 및 디렉토리를 삭제 함. ./bin/hadoop fs -rmr [디렉토리|파일...]  비어있지 않은 디렉토리도 정상적으로 삭제 함.
 카운트값 조회 - count   
 count기본적으로 지정한 경로에 대한 전체 디렉토리 개수,
전체 파일 개수, 전체 파일 사이즈, 지정한 경로 이름을 출력. 
./bin/hadoop fs -count <-q> [디렉토리|파일...] HDFS는 디렉토리에서 생성할 수 있는 파일 개수나 파일 용량을
제한할 수 있음. -q 옵션을 사용할 경우, 이러한 쿼터 정보를 확인. 
파일의 마지막 내용 확인 - tail    
 tail지정한 파일의 마지막 1KB의 내용을 화면에 출력 함. ./bin/hadoop fs -tail <-f> [파일]  -f 옵션 사용시 해당 파일에 내용이 추가될 때 화면에 출력된 내용도
함께 갱신. 
권한 변경 - chmod, chown, chgrp    
 chmod지정한 경로에 대한 권한을 변경. ./bin/hadoop fs -chmod <-R> [권한모드...] [디렉토리|파일...]  -R 옵션 사용 시 하위 디렉토리 설정도 모두 변경 됨. 
 chown지정한 파일과 디렉토리에 대한 소유권을 변경하는 명령어. ./bin/hadoop fs -chown <-R> [변경 사용자명:변경 그룹명] [디렉토리|파일...]   -R 옵션 사용 시 하위 디렉토리 설정도 모두 변경 됨.  
 chgrp지정한 파일과 디렉토리에 대한 소유권 급만 변경. ./bin/hadoop fs -chown <-R> [변경 그룹명] [디렉토리|파일...]    -R 옵션 사용 시 하위 디렉토리 설정도 모두 변경 됨.  
0 바이트 파일 생성 - touchz    
 touchz크기가 0바이트인 파일을 생성. ./bin/hadoop fs -touchz [파일...]   지정한 파일이 이미 0바이트 이상인 상태로 저장돼 있다면 오류 발생. 
 복제 데이터 개수 변경 - setrep   
 setrep설정한 파일의 복제 데이터 개수를 변경할 수 있음. ./bin/hadoop fs -setrep <-R> -w [복제데이터개수] [디렉토리|파일...]   -R 옵션 사용 시 하위 디렉토리에 있는 파일의 복제 데이터 개수도 변경 됨. 
 휴지통 비우기 - expunge   
 expunge주기와 상관 없이 휴지통을 비운다.  ./bin/hadoop fs -expungeHDFS에서는 삭제한 파일을 ".Trash/"라는 임시 디렉토리에 저장한 후, 
일정 시간이 지난 후에 완전히 삭제합니다. 
 파일 형식 확인 - test   
 test지정한 경로에 대해[-ezd] 옵션으로 경로가 이미 존재하는지
파일 크기가 0인지, 디렉토리인지 확인 함. 
./bin/hadoop fs -test -ezd [디렉토리|파일]     체크 결과가 맞을 경우 0을 출력 한다. 
통계 정보 조회 - stat    
 stat지정한 경로에 대한 통계 정보를 조회 ./bin/hadoop fs -stat <출력 포맷> [디렉토리|파일...]  별도의 옵션을 설정하지 않을 경우, 해당 디렉토리 혹은 파일이 
최종 수정된 날짜를 출력 함. 

 

 ※ 표 stat 명령어의 출력 포맷 옵션

옵 션내 용
%b블록 단위의 파일 크기
%F디렉토리일 경우 "directory", 일반 파일일 경우 "regular file" 출력
%n디렉토리명 혹은 파일명
%o블록 크기
%r복제 파일 개수
%y디렉토리 및 파일의 갱신일자를 yyyy-MM-dd HH:mm:ss 형식으로 출력
%Y디렉토리 및 파일의 갱신일자를 유닉스 타임스탬프 형식으로 출력

 


 

참고하면 좋을 것 같은 사이트

 http://wiki.apache.org/hadoop/FAQ

 

2014/08/27 - [BigDATA/Hadoop] - 01. 하둡 소개

 

참고 BOOK

시작하세요! 하둡프로그래밍(기초부터 실무까지 하둡의 모든 것), 정재화 저

 

    - END -


저작자 표시 비영리 변경 금지
신고

'BigDATA > Hadoop' 카테고리의 다른 글

부록. 하둡 설치  (0) 2014.09.11
03. 맵리듀스 시작하기 - 맵-리듀스 개념  (5) 2014.09.01
02. About HDFS..  (0) 2014.08.28
01. 하둡 소개  (0) 2014.08.27
[하둡교육 3일차] Pig  (0) 2013.06.05
[하둡교육 3일차] Zookeeper  (0) 2013.06.05

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

01. 하둡 소개

BigDATA/Hadoop 2014.08.27 17:39
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

 

목차

빅데이터 3대 요소

하둡이란?

하둡의 과제

하둡 배포판 살펴보기

정리

빅데이터 3대 요소

1) 크기(Volume) - 기존 파일 시스템에 저장하기 어려울뿐더러 데이터 분석을 위해 사용하는 기존 DW 같은 솔루션에서 소화하기 어려울 정도로 급격하게 데이터의 양이 증가 함.

2) 속도(Velocity) - 데이터가 매우 빠른 속도로 생성되기때문에 데이터의 생산, 저장, 유통, 수집, 분석이 실시간으로 처리돼야 함.

3) 다양성(Variety) - 다양한 종류의 데이터들이 빅 데이터를 구성하고 있음(정형, 반정형, 비정형 데이터)

 

하둡이란?

하둡은 2005년에 더그 커팅(Doug Cutting)이 구글이 논문으로 발표한 GFS(Google File System)와 맵리듀스(MapReduce)를 구현한 결과물 입니다.

처음에는 오픈소스 검색엔진인 너치(Nutch)에 적용하기 위해 시작됐다가 이후 독립적인 프로젝트로 만들어졌고, 2008년에는 아파치 최상위 프로젝트로 승격 됨.

하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하고, 분산 처리 시스템인 MapReduce를 이용해 데이터를 처리 합니다.

즉, 하둡을 통해 정말 큰 데이터를 저장할 수 있고, 그 데이터를 이용해서 연산을 수행할 수 있습니다. 이를 위한 2가지가 바로 HDFS와 MapReduce(2ver에서는 YARN) 입니다.

 

하둡은 비즈니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트가 제공 되어집니다. 이러한 프로젝트가 상용화되면서 하둡 에코시스템(Hadoop Ecosystem)이 구성됐습니다.

 

그림1. 하둡 에코시스템

 

 

 

하둡의 과제
    1. 고가용성 지원 X :  하둡의 가장 큰 문제는 바로 고가용성(HA: High Availability) 을 지원하지 않습니다.
                                   그래서 클라우데라, 야후, 페이스북 같은 업체에서는 자신만의 고가용성 솔루션을 만들어 공개했습니다.
                                   하둡 2.0 버전에서 네임노드의 고가용성을 지원하겠다고 발표했었다고 하니..현재 2.0버전이 나왔으니 진짜 지원을 하는지 나중에 하둡2.0스터디를할 때 집고 넘어가야겠습니다.

    2. 파일 네임스페이스 제한 : 네임노드가 관리하는 메타 정보는 메모리로 관리되기 때문에 메모리의 크기에 따라 HDFS에 저장하는 파일과 디렉터리 개수가 제한을 받음.

    3. 데이터 수정 불가 : 하둡의 또 다른 단점은 한 번 저장한 파일은 더는 수정할 수 없다는 것 입니다. HDFS에 파일을 저장하면 파일의 이동이나 이름 변경과 같은 작업은 가능하지만 저장된 파일의 내용은 수정할 수 없습니다.
                                    그래서 파일 읽기나 배치 작업만이 하둡에 적당합니다. 이러한 문제점도 조금씩 개선되고 있습니다. 하둡0.21 버전에서는 기존에 저장된 파일에 내용을 불일 수 있는 append 기능이 제공됩니다.

    4. POSIX 명령어 미지원 : 기존 파일 시스템에서 사용하던 rm, mv 같은 POSIX 형식의 파일 명령어를 이용할 수 없습니다. 하둡에서 제공하는 별도의 쉘 명령어와 API를 이용해 파일을 제어해야만 합니다.

하둡 배포판 살펴보기

주요 하둡 배포판 

    • Cloudera(클라우데라) Hortonworks(호튼웍스)
    • MapR Technologies(MapR 테크놀로지스)
    • Amazon(아마존)
    • Hstreaming

 

참고

책 : 시작하세요! 하둡 프로그래밍(기초에서 실무까지 하둡의 모든것, 정재화 지음)

 

하둡 기초 용어 설명

http://www.slideshare.net/madvirus/ss-28761748

하둡2 YARN

http://www.slideshare.net/madvirus/2-yarn

 

- 끝 -

저작자 표시 비영리 변경 금지
신고

'BigDATA > Hadoop' 카테고리의 다른 글

03. 맵리듀스 시작하기 - 맵-리듀스 개념  (5) 2014.09.01
02. About HDFS..  (0) 2014.08.28
01. 하둡 소개  (0) 2014.08.27
[하둡교육 3일차] Pig  (0) 2013.06.05
[하둡교육 3일차] Zookeeper  (0) 2013.06.05
[하둡교육 2일차] Hadoop 설치  (0) 2013.06.04

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바