보물창고/Big Data2015.10.05 23:30






context.getConfiguration(); java.lang.NullPointerException 문제 해결




hadoop MRjob을 작성하는중 나타난 트러블 슈팅 내용입니다

환경은 CDH5.X버전이고 ubuntu14.04입니다







15/08/07 10:53:04 INFO input.FileInputFormat: Total input paths to process : 1
15/08/07 10:53:04 INFO mapreduce.JobSubmitter: number of splits:1
15/08/07 10:53:04 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1197195623_0001
15/08/07 10:53:04 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/08/07 10:53:04 INFO mapreduce.Job: Running job: job_local1197195623_0001
15/08/07 10:53:04 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/08/07 10:53:04 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/08/07 10:53:04 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter
15/08/07 10:53:04 INFO mapred.LocalJobRunner: Waiting for map tasks
15/08/07 10:53:04 INFO mapred.LocalJobRunner: Starting task: attempt_local1197195623_0001_m_000000_0
15/08/07 10:53:04 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/08/07 10:53:04 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ]
15/08/07 10:53:04 INFO mapred.MapTask: Processing split: hdfs://Big4:8020/user/hadoop/k/20150804/s0104
15/08/07 10:53:05 INFO mapreduce.Job: Job job_local1197195623_0001 running in uber mode : false
15/08/07 10:53:05 INFO mapreduce.Job: map 0% reduce 0%
15/08/07 10:53:05 INFO mapred.LocalJobRunner: map task executor complete.
15/08/07 10:53:05 WARN mapred.LocalJobRunner: job_local


1197195623_0001
java.lang.Exception: java.lang.NullPointerException
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1017)
at java.lang.Double.parseDouble(Double.java:540)
at kstar_mr_get_idl_data.K$AMapper.map(K_mr.java:89)
at kstar_mr_get_idl_data.K$AMapper.map(Kr_mr.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
15/08/07 10:53:06 INFO mapreduce.Job: Job job_local1197195623_0001 failed with state FAILED due to: NA
15/08/07 10:53:06 INFO mapreduce.Job: Counters: 0

at ChildProcess.exithandler (child_process.js:751:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1015:16)
at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

hadoop@B:~/DEVS/WORK/w/kev$ 




java Map 클래스안에서 아래와 같은 부분에서 에러가 났습니다

89번째라인이 문제였는데

context.getConfiguration()에서 가져온값중에 from, to 값이 없는것이 문제였습니다






구글링을 해보니 아래와 같은 링크가 있어 참고해서 해결 했습니다

http://stackoverflow.com/questions/13214914/configuration-object-is-null-in-hadoop-mapper



위에 내용중 참고한 부분은 아래 내용입니다

And also try this JobConf job = new JobConf(new Configuration());


MapReduce java 코드 main에서 conf를 아래처럼 만들어 쓰고 있었는데요

JobConf conf = new JobConf();

이렇게 써서 특정 시스템에서는 잘 동작으했으나

시스템을 옮기기 안되는 문제가 있어


JobConf conf = new JobConf(new Configuration());

이런식으로 변경했더니 잘 동작을 했습니다


신고





Posted by 파란물
보물창고/Big Data2015.08.23 23:30





flume error 해결 org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritable



해결에 참고한 내용



입력되는 값
문자열이 탭으로 구분된 데이터

sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de





 에러로 출력되는 결과
SEQ!org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritable      €藪???pR??      NC+?   abcd def de      NC+?   ab d eef ddefsef   8    NC+?   ,sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf      NC+?   abcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de








아래 설정에서 파란색 라인을 추가 하는 것으로 해결됨

agent.sources = logfilereadSource
agent.channels = memoryChannel
agent.sinks = loggerSink

# source
# For each one of the sources, the type is defined
agent.sources.logfilereadSource.type = exec
agent.sources.logfilereadSource.command = tail -F /home/hadoop/download/flumeTestfile.log
agent.sources.logfilereadSource.batchSize = 10
agent.sources.logfilereadSource.channels = memoryChannel

# channel
agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 20480


# Sink
#Specify the channel the sink should use
agent.sinks.loggerSink.type = hdfs
agent.sinks.loggerSink.channel = memoryChannel
agent.sinks.loggerSink.hdfs.path = hdfs://localhost:8020/user/admin/flumetest/log
agent.sinks.loggerSink.hdfs.fileType = DataStream
agent.sinks.loggerSink.serializer = com.adaltas.flume.serialization.HeaderAndBodyTextEventSerializer$Builder
agent.sinks.loggerSink.serializer.format = CSV
agent.sinks.loggerSink.serializer.appendNewline = true
agent.sinks.loggerSink.serializer.delimiter = '\t'


위 설정 추가후

ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf





신고





Posted by 파란물
보물창고/Programming2015.07.20 23:30





elasticsearch index client java api example mavne 프로젝트 기본 구조




elasticsearch java api를 이용한 기본 코딩 입니다

elasticsearch api문서보는게 익숙치 않다보니 삽질좀 하다가 성공했습니다


public class App {

public static void main(String[] args) {

Settings settings = ImmutableSettings.settingsBuilder()

.put("cluster.name", "imcelasticsearch")

.build();

TransportClient client = new TransportClient(settings)

.addTransportAddress(new InetSocketTransportAddress("hostname2", 9300));

IndexResponse index_response = null;

try {

index_response = client.prepareIndex("twitter", "tweet", "1")

       .setSource(jsonBuilder()

                   .startObject()

                       .field("user", "kimchy")

                       .field("postDate", new Date())

                       .field("message", "trying out Elasticsearch")

                   .endObject()

                 )

       .execute()

       .actionGet();

} catch (ElasticsearchException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}


client.close();;

}




추가한 dependency


<dependency>

<groupId>org.elasticsearch</groupId>

<artifactId>elasticsearch</artifactId>

<artifactId>elasticsearch</artifactId>

<version>1.6.0</version>

</dependency>




참고한 사이트


위 코드 실행 결과 아래처럼 잘 동작 한 것을 볼 수 있습니다




maven import해서 사용하세요

elasticsearch_.zip



신고





Posted by 파란물
보물창고/Big Data2014.10.28 23:30





윈도우 하둡 스터디 하면서 본 MS 한글 문서 Getting Started Azure HDInsight 한글 문서들 Window hadoop










  • 아래 번호 순서대로 읽으면서 전체적인 개념을 파악할 수 있었습니다
  • 모두 한글 문서 입니다








  1. Azure HDInsight를 사용하여 시작
    1. Getting Start의 문서
    2. Azure에서 HDInsight를 만들고 워드 카운트를 하고 엑셀에서 데이터를 읽어와 편집까지 30분 강좌
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-get-started/

  2. HDInsight와 함께 Azure Blob 저장소 사용
    1. HDInsight에서 Blob의 위치와 역할을 파악할 수 있음
    2. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-use-blob-storage/


  3. HDInsight에 데이터 업로드
    1. Blob에 데이터를 올리는 방법을 설명 합니다
    2. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-upload-data/


  4. HDInsight에서 Sqoop 사용
    1. New-AzureHDInsightSqoopJobDefinition -Command "export --connect $connectionString --table $tableName_log4j --export-dir $exportDir_log4j --input-fields-terminated-by \0x20 -m 1"
    2. 위 문장을 사용해서 sqoop을 실행함
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-use-sqoop/


  5. HDInsight 클러스터 프로비전
    1. 최초 생성 방법을 설명
    2. Blob을 사용한다는 내용이 적혀 있음 : 일반적으로 HDInsight 클러스터를 프로비전하고, 해당 작업을 실행한 후에 비용을 줄이기 위해 클러스터를 삭제합니다. (클러스터는 HDInsight 로컬 디스크를 의미하는듯)
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-provision-clusters/

  6. 프로그래밍 방식으로 Hadoop 작업 제출
    1.  powersell을 사용하여 작업 제출
    2. mapreduce, hive, sqoop 등
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-submit-hadoop-jobs-programmatically/


신고





Posted by 파란물
보물창고/Big Data2013.04.09 23:00









윈도우 하둡 HDInsight 0.4.0 클러스터 구성 - window hadoop HDInsight cluster setting






HDInsight 포럼에 있는 글을 참고 하여 클러스터를 구성했습니다

http://social.msdn.microsoft.com/Forums/en-US/hdinsight/thread/885efc22-fb67-4df8-8648-4ff38098dac6




HDInsight Preview server download

http://www.microsoft.com/web/gallery/install.aspx?appid=HDINSIGHT-PREVIEW







구성 환경
 - VirtualBox, Window Server 2012, 메모리 3G, 호스트 전용 네트워크

 - master 1개, slave 3개







HDInsight 0.4.0버전(130315) 이용하여 cluster 구성하였습니다

9번에서 0.3.0 버전과는 차이가 있으니 참고하고 봐주세요

리눅스 멀티 노드 구성과 대부분 비슷합니다








1. 마스터와 노드가 적절한 IP 가지고 있는지 확인 하세요






2. 모든 노드에 있는 방화벽과 포트 차단 소프트웨어를 끄세요

- 노드끼리 서로 엑세스 권한이 있는지 확인합니다






3. 마스터와 모든 노드에 있는 %WinDir%\system32\drivers\etc\hosts 파일을 편집합니다

다음과 같은 내용을 추가 합니다

<ip-to-master> master
<ip-to-node1> node1
......
<ip-to-nodeN> nodeN






4. 모든 노드의 C:\Hadoop\hadoop-1.1.0-SNAPSHOT\conf\master 파일을 수정합니다

- master 하나만 적혀 있는지 확인하세요

- 호스트 파일에 입력한 내용과 일치해야 합니다






5. 모든 노드의 C:\Hadoop\hadoop-1.1.0-SNAPSHOT\conf\slave파일을 편집:

- 모든 slave 노드 이름을 추가합니다

- 호스트 파일에 입력한 내용과 일치 해야합니다

node1
...
nodeN






6. 마스터와 모든 노드에서 C:\Hadoop\hadoop-1.1.0-SNAPSHOT\conf\core-site.xml 수정합니다

- fs.default.name 속성을 찾아 hdfs://master:8020으로 변경합니다






7. 마스터와 모든 노드에서 C:\Hadoop\hadoop-1.1.0-SNAPSHOT\conf\mapred-site.xml파일을 수정합니다

- 로컬 호스트에 대한 모든 참조 값을 master 수정합니다






8. 마스터와 모든 노드에서 C:\Hadoop\hadoop-1.1.0-SNAPSHOT\conf\hdfs-site.xml파일을 수정합니다

- 로컬호스트 대신 master 모두 수정합니다

- dfs.replication 설정을 찾아 원하는 복제 개수를 적어줍니다 (일반적으로 3)






9. 마스터와 슬레이브 노드 에서 command창을 열고 실행 스크립트 start-onebox.cmd 실행시킵니다

- 파일은 C:\Hadoop 있습니다

- master slave 원하는 설정에 따라 프로세스를 정지시켜 구성합니다

- 경험상 노드를 먼저 실행 시키고 마스터를 실행시키면 master slave 한번에 인식합니다







10. 설정은 사용하던 하둡 시스템에서는 바로 동작하지 않을 있습니다

- 사용하던 시스템에서 구성하려면 dn폴더를 찾아 삭제 시도해 보세요

- 최초 HDInsight 설치한 시스템에서 테스트를 권장합니다






11. HDInsight 0.4.0 cluster 구성 sqoop, pig, hive, streaming 테스트 확인 했습니다







신고





Posted by 파란물

티스토리 툴바