본문 바로가기

Study

(328)
파이썬으로 병렬처리 하기 3 마지막장 (Parallel Python) 오늘 심각한 고민을 했습니다 ... 자바는 그냥 갔다 버려야되나.. Parallel Python 이거 써보고 할말을 잃었습니다. 생각보다 너무 쉽고. Parallel Python을 사용하기 위해서는 대략 다음 절차를 수행하시면 됩니다. 연산을 하려는 노드, Master노드에 Parallel Python 설치(http://www.parallelpython.com/) [현재 저같은경우 Python 2.7을 사용하고 있습니다.] 그다음 연산하려는 모든 노드에서 네트웍 대역이 같다면, ppserver.py -a (이 의미는 실제 코드 설명할때 설명0 그리고 마스터 노드에서 병렬처리할 코드를 작업하시면 됩니다. 큰틀은 다음과 같습니다. 가장 중요한 부분은 ppserver= ppservers=("*",) 입니다. ..
파이썬으로 병렬처리 하기 2 (Parallel Python) 잠깐동안 예제를 따라해보면서 해본 느낌은.. 잘 모르겠지만 엄청 간단합니다. 먼저 Parallel Python에서 http://www.parallelpython.com/content/view/18/32/ 에서 다운 받아서, pp를 다운받아서, 돌아갈 머신과 마스터 노드에 python setup.py install 하면 끝.. 그리고 사용방법은 계산노드(slave)에서 ppserver.py -a(auto discovery) 하면 끝.. 물론 포트를 지정해 준다면 -p 옵션을 사용하면됩니다. 그런다음 마스터 노드에서 다음과 같은 방법으로 하면됩니다. (지금 같은경우는 1master node, 1slave node로 구성된 케이스) import sys,thread import pp class myTest: d..
파이썬으로 병렬처리 하기 1 (Parallel Python) 몇가지 처리해야할 작업이 있습니다. 몇 가지 케이스에 대해 계속 테스트를 해보고 있지만. 이걸 Hadoop MapReduce로 처리하는것은 정말 성능이 안나오더군요. 흔히 말한는 반복적인 작업... 이걸 Storm, 또는 Spark를 통해 해결해 보고 싶지만. 현재 사정상 신규아키텍처를 도입하는데 문제가 있어서... 물론,,, 현재 환경은 HDP(Hortonworks Data Platform)2.3 이기 때문에, 설치하거나 실행하는데, 문제는 아닙니다. Storm 같은경우 Topology를 만들면 되겠지만.. 약간 제가 생각하는 작업에는 불리할것 같고.. Spark쪽은 아직 제가 지식이 부족해서 시간대비 성과가 부족할것 같은 생각 때문입니다. 물론, 전 아직까지는 언어중에 Java가 좋지만, 요즘 왠만한..
MySQl Memory DB Table is Full 환경은 Cetnos 64bit 30GBRAM, MySQL 5.7 버전을 사용하고 있습니다. 많은 텍스트들을 보면 Hadoop MapReduce에서 반복적인 작업은 지양하라고 되어있는데, 현재, 싱글 머신에서 돌리기에는 양이 너무 많아서(쓰레드를 붙이더라도)... MapReduce에 약간의 꼼수를 써서 포팅해서 사용하고 있습니다. 현재 10개의 Hadoop Node에서 총 40개의 Task(MapReduce) 걸었습니다. Map 작업 한번에 총 약 12개 정도의 쿼리를 날립니다. 사실 이 쿼리가 단일 머신에서 할때는 0.55ms 정도 나오는데 10Node로 동시에 Query를 날리니 9s 넘게 걸리더군요.. 물론 제가 쿼리를 엉망으로 만든것은 있습니다. 이러한 문제점을 해결하기 위해, 쿼리에 사용되는 Ta..
Sqoop-export : from hive to mysql 만약 Hive에서 test라는 테이블을 mysql로 옮길때는 1. Hive의 Test와 동일한 Test테이블을 Mysql에 생성2. sqoop 을 이용 sqoop export --connect jdbc:mysql://192.168.1.1/database --username user --password password --table test --export-dir /apps/hive/warehouse/test --input-fields-terminated-by '\001' --lines-terminated-by '\n'
Centos6에서 MySQL 5.1 to 5.7 업그레이드 현재 사용중인 리눅스는 Centos6 64bit 이고 MySQL 버전은 기본 5.1 버전입니다. 5.7로 업그레이드 하기 위해서는 다음과 같은 절차로 진행하시면 되십니다. 먼저 MySQL 사이트에 들어가서 RPM 을 바운받아 YUM repo를 추가합니다. http://dev.mysql.com/downloads/repo/yum/ wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm :: 설치 /etc/init.d/mysqld stop :: mysql 정지 yum remove mysql mysql-server* 기존 mysql 삭제yum install mysql-server :: 5.7 설치 /etc/init.d/mysqld sta..
Hive를 이용해서 Rank 구하기 일단 현재 상황은 MySQL 안에 366996 로우가 들어있는 상황이고, 여기안에 데이터가 있는 상황입니다여기에 데이터가 있는데, 랭킹을 매겨야 하는 상황입니다. select B,T,(select count(*)+1 from 9_Spending_blk where T>t.T) as rank from a_blk as t order by rank asc; SELECT a.B, a.T, count(b.T)+1 as rankFROM 9 a left join 9 b on a.T>b.T and a.B=b.Bgroup by a.B, a.T 통해서 RANK를 구하려고 했는데, 생각보다 느리게 되더군요.... MySQL로 구하는거 포기하고HIVE로 옮긴다음 해봤더니 금방 구할수 있었습니다. 절차는 다음과 같습니다. sqo..
MapReduce :: Type mismatch in value from map 주말에 갑자기 텍스트 데이터를 분석할 일이 있어서,, 분석이라기 보다는. 문제는 이 파일이 파일한개가 40~50GB 정도 되는것 같습니다. 보통은 Toad로 MySQL로 밀어 넣어서,, 확인 해보려고 했더니, Toad가 OutofMemory 오류가 나더군요.. 저 오류는 자바에서 본걸로 기억하는데 Toad가 자바로 만들어졌나.. 결국에는 포기하고 HDFS에서 MapReduce로 프로그램을 만들었습니다. Type mismatch in value from map Map작업을 돌리다보니, 이런 오류가 나더군요. 이오류는 Map,Reduce의 형태가 드라이버 클래스와 안맞을때 나는 오류 입니다. 오랜만에,, 맵리듀스 프로그램을 만들어봣더니,, 머리가 아프네요 http://stackoverflow.com/ques..