HDP에 익숙해져있다가 self-deployed Hadoop을 사용하다 보면, 답답할때가....


예를들면, HDFS를 확장하는것조차 마우스 클릭 딸각한번으로 해결될 문제가.


메뉴얼로 정리해보면


1.Hadoop.tar.gz 파일을 확장하려는 노드로 배포


데이터 노드에서


./hadoop-daemon.sh start datanode


2. 


네임 노드(HA했다면 둘다 설정 복사)에서


hdfs-site.xml에서 설정한 파일을 참고해서


    <property>

      <name>dfs.hosts</name>

      <value>/etc/hadoop/dfs.hosts</value>

    </property>


    <property>

      <name>dfs.hosts.exclude</name>

      <value>/etchadoop/dfs.exclude</value>

    </property>


dfs.hosts에 호스트 파일에 새로 추가한 데이터 노드 추가 



3. 


Acitve NameNode에서 


./refresh-namenodes.sh


노드 추가 끝


*

반대로 노드를 삭제할때는. 2번절차에서 수행한 dfs.hosts 데이터노드를 지우고 dfs.exclude


하고 Active NameNode에서 ./refresh-namenodes.sh 하면 제외하려는 데이터노드에 대해 decommision 절차가 수행된다음 제거

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

Spark에서 paruqet 압축 알고리즘을 찾다가. 

분명히 두가지 방법중 한가지 방법이면 된다고 하는것 같은데


sqlContext.setConf("spark.sql.psqlContext.setConf("spark.sql.parquet.compression.codec", "snappy")
sqlContext.sql("SET spark.sql.parquet.compression.codec=snappy")


저는 이것이 동작하네요 
sqlContext.sql("SET spark.sql.parquet.compression.codec=snappy")

사용하는 화경은 HDP 2.5 Spark 1.6 입니다


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

몇가지 처리해야할 작업이 있습니다. 


몇 가지 케이스에 대해 계속 테스트를 해보고 있지만. 이걸 Hadoop MapReduce로 처리하는것은 정말 성능이 안나오더군요. 흔히 말한는 반복적인 작업... 이걸 Storm, 또는 Spark를 통해 해결해 보고 싶지만. 현재 사정상 신규아키텍처를 도입하는데 문제가 있어서... 


물론,,, 현재 환경은 HDP(Hortonworks Data Platform)2.3 이기 때문에, 설치하거나 실행하는데, 문제는 아닙니다. Storm 같은경우 Topology를 만들면 되겠지만.. 약간 제가 생각하는 작업에는 불리할것 같고.. Spark쪽은 아직 제가 지식이 부족해서 시간대비 성과가 부족할것 같은 생각 때문입니다.


물론, 전 아직까지는 언어중에 Java가 좋지만, 요즘 왠만한 귀찮은 작업들은 Python으로 하고 있었는데(사실 과거에는 Perl도 배워보고 싶엇지만..) 너무 강력해서 계속 쓰게 되네요. 솔찍히 Java로 10줄 만들걸 파이선으로 3줄이면 표현이 되거든요..


사실 이렇게 하다가 고민이 생겼습니다. 다중 노드(현재 저 같은 경우는 10노드 + 추가 2노드) Produce Consumer 패턴?으로 로 작업을 병렬로 처리해보고 싶었는데, 이걸 프로그램으로 하나하나 만들기도 모하고,, 이러저런 고민이 많았는데,,


파이선이 해결해 주었네요 http://www.parallelpython.com/ 몇가지 고민은 Master Node에서 Slave 노드로 작업을 어떻게 넘겨주느냐 여부인데,, 자체적인 Queue가 있는것인지, 아님 외부 Queue를 이용해야하는지 봐봐야겠네요..


지금 RabbitMQ와 Kafaka를 동시에 보고 있는데,,, 제가 제대로 알고 있다면 Kafakfa는 Consumer에게 전달된 메세지가 어떤것인지에 대한 보장??꼭 UDP같은 성격이라... 의 문제가 있어서... 텍스트들을 보다 보면,, 케이스에 따라서는 RabbitMQ를 추천하시더군요 


일단은 이번포스팅의 목적은 파이선에서 병렬 처리를 쉽게 해주는 방법이 있는데,, 그것은 parallel python 입니다.


파이썬 짱짱,, 

저작자 표시 비영리 변경 금지
신고
FileSystem fs = FileSystem.get(conf);
Path pt = new Path("/path");
ContentSummary cs = fs.getContentSummary(pt);
long fileCount = cs.getFileCount();

https://stackoverflow.com/questions/20381422/file-count-in-an-hdfs-directory


MapReduce 프로그래밍 중간에, 생성되는 파일의 갯수를 알아야 했는데, 생각보다 쉬운방법이 있네요.


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

in hdfs-site.xml 


<property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>


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

+ Recent posts