'Hadoop'에 해당되는 글 3건

  1. 2014.10.08 flume 정리.
  2. 2014.08.14 windows 에서 hadoop 시작 하기.
  3. 2014.08.13 windows 에서 hadoop 설치 3

flume 정리.

Hadoop 2014. 10. 8. 19:17
flume을 막연히 해보려니 하기가 싫다. 
가장 큰 이유는 windows에 설치 하다가 실패해서 인듯.. 역시 안되면 재미가 없넹..
스터디 목적으로 대충 정리를 하니까 할수 있다는 자신감이 생긴다.ㅎ

Flume : Cloudera 에서 공개한 오픈소스 로그 수집기 
(안정성과, 가용성이 높다)

Flume OG : 0.9.x 버전 Cloudera
Flume NG : 1.0 버전 apache

번거로운 Flume OG 의 설정을 개선하기 위해 NG 가 등장.

아키텍쳐가 바뀜

Flume OG

Flume NG



Event : 헤더와 데이터(payload)로  구성되며 agent를 통해 이동되는 단위
Flow : 원점에서 최종 목적지 까지 이벤트들의 흐름
Client : 이벤트의 출발 지점에서 동작 하여 flume으로 전달되는 인터페이스의 구현
           일반적으로 데이터를 소비하는 어플리케이션의 프로세스 골간에서 동작 하며
           예로 Flume Log4j Appender 가 client가 됩니다. 
Agent : sources, channels , sinks 로 구성됨 agent간 이벤트를 이동할 수 있다.
Source : 특정 메커니즘을 통해 전달된 이벤트를 소비 할수 있는 인터페이스 구현 (종류는 아래 참조)
           예로 avro source는 다른 agent로 부터 전달된 avro 이벤트를 수신하기 위해 사용 될수 있는 source 구현 입니다. 
           source는 이벤트를 수신하면 하나 이상의 채널로 넘겨줍니다.
Cannel : event에 대한 일시적인 저장소, sink가 전송 후 해당 이벤트가 제거될때 까지 event는 channel에 유지됩니다. 
           예로 embeded database 백업 파일 시스템을 사용 하는 JDBC 채널이 있습니다.
           channel은 flow 에서 내구성을 보장하는 중요한 역할을 합니다 
Sink : 채널에서 이벤트를 읽어와 출력 대상에 씀 sink가 출력 대상에 이벤트(데이터) 전달을 완료 하면 채널에서 해당 이벤트를 삭제합니다.

이러한 컨셉은 flume의 아키텍쳐 , 구현, 설정, 배포에 도움이 됩니다. 

Folw 구성 종류

Multi-agent (에이전트 간 연결)


Consolidation (다수의 노드를 한곳으로)


Multiplexing (한 이벤트를 다양한 방식으로 처리할 때)


source 의 종류 

Spooling Directory Source : 디렉토리에 새롭게 추가되는 파일을 데이터로 사용
Exec Source : 명령행을 실행하고 콘솔 출력 내용을 데이터 입력으로 사용
Avro Source : 외부 Avro 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용
Trift Source : 외부 Thrift 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용
JMS Source : JMS 메세지를 입력으로 사용
Syslog Source : 시스템 로그를 입력으로 사용
NetCat source : TCP 로 라인 단위 입력 받음

Sink의 종류

HDFS Sink : HDFS에 데이터 파일로 씀
HBase Sink : HBase에 데이터를 씀
Avro Sink : 다른 Avro 서버 (Avro Source) 에 이벤트를 전달 함
Thrift Sink : 다른 Thrift 서버 (Thrift Source)에 이벤트를 전달 함
File Roll Sink : 로컬 파일에 데이터를 씀
MorphlineSolrSink : 데이터를 변환 해서 Solr 서버에 씀
ElasticSearchSink : 데이터를 변환 해서 ElasticSearch 클러스터에 씀.
Null Sink : 이벤트를 버림
 
Interceptor 

 Source로 들어온 이벤트 수정 또는 버릴 때 사용
- Source로 들어온 이벤트는 interceptor 를 거친 뒤에 채널에 전달

Timestamp : 이벤트 헤더에 현재 시간 값 추가
Static Interceptor : 이벤트 헤더에 지정한 값 추가
Regex filtering interceptor : 정규 표현식에 일치하는지 여부에 따라 이벤트를 버릴지 결정

한 개 이상 interceptor 적용 가능





맥에서는 한방에 됨..

참조사이트 : 도움이 많이 되었습니다. 








'Hadoop' 카테고리의 다른 글

windows 에서 hadoop 시작 하기.  (0) 2014.08.14
windows 에서 hadoop 설치  (3) 2014.08.13
Posted by 마법수정화살
,

windows 에서 hadoop 설치 를 마쳤다면 ..


- single node cluster 구성
- version을 2.5.0으로 다시 설치 함.

ex) D:\install\hadoop-2.4.1-src\hadoop-dist\target 
디렉 토리에 hadoop-2.4.1.tar.gz 파일을 얻었을 것이다.

압축을 풉니다. 

ex) D:\hadoop-2.4.1

압축을 풀면 아래와 같은 디렉토리 구조가 있다. 

Directory of D:\hadoop-2.4.1 01/18/2014 08:11 AM <DIR> . 01/18/2014 08:11 AM <DIR> .. 01/18/2014 08:28 AM <DIR> bin 01/18/2014 08:28 AM <DIR> etc 01/18/2014 08:28 AM <DIR> include 01/18/2014 08:28 AM <DIR> libexec 01/18/2014 08:28 AM <DIR> sbin 01/18/2014 08:28 AM <DIR> share 0 File(s) 0 bytes

Starting a Single Node (pseudo-distributed) Cluster

모르겠다 일단 따라 하자.

D:\hadoop-2.4.1\etc\hadoop\hadoop-env.cmd 파일을 열고 마지막 줄 밑에 추가한다.

set HADOOP_PREFIX=D:\hadoop-2.4.1
set HADOOP_CONF_DIR=%HADOOP_PREFIX%\etc\hadoop
set YARN_CONF_DIR=%HADOOP_CONF_DIR%
set PATH=%PATH%;%HADOOP_PREFIX%\bin

같은 경로의 core-site.xml 파일도 아래와 같이 수정

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://0.0.0.0:19000</value>
  </property>
</configuration>

같은 경로의 hdfs-site.xml 파일도 아래와 같이 수정

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

slaves 파일도 아래와 같은지 확인

localhost

YARN Configuration

D:\hadoop-2.4.1\etc\hadoop\mapred-site.xml 파일을 수정
그런데 이파일 이 없다면.. mapred-site.xml.template파일을 복사하여 mapred-site.xml 로 이름을 바꾼다
%USERNAME% 부분을 사용하는 WINDOWS 유저 이름을 넣습니다.

<configuration>

   <property>
     <name>mapreduce.job.user.name</name>
     <value>%USERNAME%</value>
   </property>

   <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
   </property>

  <property>
    <name>yarn.apps.stagingDir</name>
    <value>/user/%USERNAME%/staging</value>
  </property>

  <property>
    <name>mapreduce.jobtracker.address</name>
    <value>local</value>
  </property>
 
</configuration>

마지막으로 yarn-site.xml 파일 수정

<configuration>

<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.resourcemanager.address</name> <value>127.0.0.1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>127.0.0.1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>127.0.0.1:8031</value> </property> </configuration>


Windows SDK 7.1 Command Prompt 실행

Select Start --> All Programs --> Microsoft Windows SDK v7.1 and open Windows SDK 7.1 Command Prompt

ex) haddop 경로 D:\hadoop-2.4.1

환경변수 세팅
D:\hadoop-2.4.1\etc\hadoop\hadoop-env.cmd

파일시스템 포맷
D:\hadoop-2.4.1\bin>hdfs namenode -format

에러가 없는지 확인. 

완료가 되면 ex) D:\tmp 디렉토리에 파일시스템이 생깁니다. 

Start HDFS Daemons

D:\hadoop-2.4.1\sbin\start-dfs.cmd

두개의 창이 뜹니다. title을 보면 하나는 namenode, 하나는 datanode 라 되어있는것을 확인할수 있다.
namenode는 메타데이터를 가지고 있고 datanode는 데이터를 가지고 있는것 같다.


http://localhost:50070/ 로 접속을 해보면 dfshealth.html 페이지를 확인 할수 있다.
utilities > browse the file system 으로 file 시스템을 확인 할수 있는데 인상  깊다.

MapReduce Job 실행에 필요한 디렉토리 생성

D:\hadoop-2.5.0\bin>hdfs dfs -mkdir /user

D:\hadoop-2.5.0\bin>hdfs dfs -mkdir /user/khlee

**여기서 만들어진 디렉토리를 위에서 설명한  http://localhost:50070/ 
utilities > browse the file system 에서 확인 할 수 있습니다.

hadoop home 으로 이동 후 아래 명령어 수행
분산 파일 시스템에 입력 파일을 복사
D:\hadoop-2.5.0> hdfs dfs -put etc/hadoop input


HDFS Daemon이 잘 동작하는지 확인해 보자.
아래 myfile.txt 는 미리 생성해놓는다.

D:\hadoop-2.4.1\bin>hdfs dfs -put myfile.txt /

D:\hadoop-2.4.1\bin>hdfs dfs -ls /

아래와 같이 나오면 된듯?

그밖에 많은 하둡 명령어 들이 있다.

http://hadoop.apache.org/docs/r0.18.3/hdfs_shell.html 참조


다음은 맵리듀스 예제. 

먼저 yarn을 실행

D:\hadoop-2.5.0\sbin> start-yarn.cmd


D:\hadoop-2.5.0>hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar grep input output 'dfs[a-z.]+'

hadoop을 찾을 수 없다면 etc/hadoop/hadoop-env 를 실행하고 해보자

yarn을 실행 시키고 http://localhost:8088/ 에 접속라면 리소스매니저라는 웹 페이지가 있다. 


sbin/hadoop-all 을 열어보면 hdfs , yarn이 실행 되는것을 볼때.

하둡은 이 두가지 서비스 라는것으로 볼 수 있다. 


HDFS : Hadoop Distributed File System

http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

YARN : Apache Hadoop NextGen MapReduce (YARN)

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html












'Hadoop' 카테고리의 다른 글

flume 정리.  (0) 2014.10.08
windows 에서 hadoop 설치  (3) 2014.08.13
Posted by 마법수정화살
,
빅데이터 컴퓨팅 기술을 배우려면 하둡은 필수!

뭔지 모르겠지만 일단 설치시작해보자!


windows에서 hadoop 설치는 고난의 연속이라고 들은 적이 있으나 스터디가 목적이므로 강행 하였다. 

일단 : http://hadoop.apache.org/ 에 접속하여 살펴보기.

사용법이 리눅스 기준이네... 


windows 에서 빌드하려면 http://wiki.apache.org/hadoop/Hadoop2OnWindows 를 참조하라고 한다. 

그럼 설치 시작!

1. 지원하는?(테스트 해본, 될것같은) windows버전 이다. 

Windows Server 2008
Windows Server 2008 R2 
Windows Vista
Windows 7

설치하면서 찾아보니 Windows8 에서도 설치하는 사람이 많은것으로 보아 windows8 에서도 잘 되는듯 하다. 

2. Java 설치 JAVA_HOME 세팅

- Oracle JDK 1.6, 1.7 에서 테스트 됨. 
- JAVA_HOME을 잡을때 경로에 space가 들어가지 않도록 주의!

3. Hadoop sources 다운로드

다운로드 : http://apache.tt.co.kr/hadoop/common/hadoop-2.5.0/
일단 무조껀 최신버전! 2.5.0 src를 받았다. 

잘 진행되고 있군... 압축을 풀어보니 maven 프로젝트네 ㅋㅋㅋ 별거아니지.. 하고 빌드 시작.. 


이제부터 난이도 상승...

http://wiki.apache.org/hadoop/Hadoop2OnWindows 페이지에 

2.4를 보면 BUILDING.txt 파일을 보고 빌드에 필요한 환경을 설정 하라는 식으로 글이 있다. 

쭉 보다보면 Building on Windows 이라고 써있는 것이 보인다. 

Requirements:

* Windows System
* JDK 1.6+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* Windows SDK or Visual Studio 2010 Professional
* Unix command-line tools from GnuWin32 or Cygwin: sh, mkdir, rm, cp, tar, gzip
* zlib headers (if building native code bindings for zlib)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)

처음 보면서 든생각.

1. windows system -> 당연하지 windows 설치 요구사항이니까..ㅋㅋ 
2. JDK1.6+ -> 이미 설치 되어있네 패쓰 
3. Maven 3.0 or later -> 이미 설치 되어있네 패쓰
4. Findbugs 1.3.9(if running findbugs) -> 정적분석툴.. 안쓸거니까 skip 해도될듯?
5. ProtocolBuffer 2.5.0 -> 구글에서 만든 오픈소스 직렬화 라이브러리 라고 책에나오네.. 이걸 쓰는구나..
6. Windows SDK or Visual Studio 2010 Professional -> 뭐지 이거 모르겠다 비쥬얼 스튜디오 비싸지 않나?
7. Unix command-line tools from GnuWin32 or Cygwin : sh, mkdir, rm, cp, tar, gzip -> 이게 필요하구나.. 난 CygWin이 이미 설치되어 있지 후훗..
8. zlip headers (if building native code bindings for zlib) -> 이건 뭐지?
9 internet connection for first build -> maven 빌드할때 central repository에서 받아와야 되니까 필요하겠지

모르겠는건 빼고 일단 빌드 해보자 하다가 낭패를 당하게 되었다.
하나하나 빌드에 꼭 필요한 중요한 것들이었다. 간과 하면 안된다.
BUILDING.txt를 꼼꼼히 읽었다면 많은 시행착오를 피할수 있었을 것이다.


1. Hadoop 빌드 전에 필요한 것들 설치하기

1. JAVA 설치 : http://oracle.com

2. MAVEN 설치 : https://cygwin.com/install.html

3. Cygwin. 설치:http://maven.apache.org/download.cgi

4. Microsoft Windows SDK v7.1. 설치 : http://www.microsoft.com/en-in/download/details.aspx?id=8279

5. Protocol Buffers 2.5.0 다운받아 압축풀기 : http://protobuf.googlecode.com/files/protoc-2.5.0-win32.zip

- ex) D:\install\protoc-2.5.0-win32

6. zlib 압축 풀기 : http://www.zlib.net/

- ex) D:\install\zlib128-dll

어짜피 에러나면 설치해야 하니 미리 설치하는것이 좋다.


JAVA_HOME 설정, M2_HOME(안해도 됨), Platform 환경 변수 세팅.

set Platform=x64 (when building on a 64-bit system)

set Platform=Win32 (when building on a 32-bit system)

이 값은 (case-sensitive) 대소문자를 구별하므로 주의 합시다!

"Platform" O

"PLATFORM" X 

"platform" X

Environment Variables - JAVA_HOME, M2_HOME and Platform


CygWin, maven, ProtocolBuffer 디렉토리를 path 에 등록 exe가 있는 디렉토리를 등록해야 한다.


PATH Variable - Cygwin & Protocol Buffers


다운로드 받은  hadoop-2.4.1-src.tar.gz 의 압축을 풀고 위치를 정해 카피헤 놓는다.

ex) D:\install\hadoop-2.4.1-src


2. maven 빌드 하기. 


command안된다, Cywin 안된다. Windows SDK 7.1 Command Prompt 를 사용해야 한다. 

windows SDK7.1 을 설치 했다면 아래 경로에 실행파일이 있을 것이다.

Select Start --> All Programs --> Microsoft Windows SDK v7.1 and open Windows SDK 7.1 Command Prompt


D:\install\hadoop-2.4.1-src 경로로 이동 후 아래 명령어 입력

mvn package -Pdist,native-win -DskipTests -Dtar


빌드중.......


아마 에러가 날것 이다. 

에러 로그 조금 위를 보면 cannot open include file zlib.h windows 이런 내용?이 있다 컴파일 에러...

c 컴파일 하다가 에러나네.. 아.. 뭐지..

D:\install\zlib128-dll 디렉 토리를 보면 include 디렉토리에 있는 zlib.h,zconf.h 를 복사하여 

D:\install\zlib128-dll 디렉토리에 복사 하고 다시 실행 하니 잘된다.


다시빌드.. 이건또 뭔 에러여..

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on project hadoop-common: ArchiverException: Error while creating archive: Problem creating jar: D:\install\hadoop-2.4.1-src\hadoop-common-project\hadoop-common\target\hadoop-common-2.4.1\bin\hadoop.dll (액세스가 거부되었습니다) -> [Help 1]

이런 경험을 몇번 해본 사람이라면 아래의 행동을 취할것 이다. 

1. 당황하지 않고 관리자 권한으로 실행

2. 해당 디렉토리의 사용자 권한 세팅

D:\install\hadoop-2.4.1-src 우클릭 > 속성 > 보안 > 사용자별 권한 모두 


그런데 안된다...


우린 이미 Cywin을 path에 넣었다 

D:\install 디렉토리로 이동 chmod -R 777 hadoop-2.4.1-src 


다시 빌드 ... 우왕 성공! 


시행 착오들

Execute failed: java.io.IOException: Cannot run program "sh"

-> cygwin을 path에 등록 하자.


'protoc --version' did not return a version

-> ProtocolBuffer 를 다운받고 path에 등록 하자. 


Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (compile-ms-winutils) on project hadoop-common: Command execution failed. Cannot run program "msbuild" (in directory "D:\install\hadoop-2.4.1-src\hadoop-common-project\hadoop-common"): CreateProcess error=2 ~~~ 

-> maven 명령어를 command나 cygwin에서 실행 하면 안된다. 
Windows SDK 7.1 Command Prompt 를 사용해야 한다.

http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os -> 이형네 스크린샷을 퍼왔습니다. 

'Hadoop' 카테고리의 다른 글

flume 정리.  (0) 2014.10.08
windows 에서 hadoop 시작 하기.  (0) 2014.08.14
Posted by 마법수정화살
,