본문 바로가기

Study/Bigdata

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 넘게 걸리더군요.. 물론 제가 쿼리를 엉망으로 만든것은 있습니다.


이러한 문제점을 해결하기 위해, 쿼리에 사용되는 Table 들을 MemoryDB로 전환해서 올려논 상태입니다.

예를들면 create table Memory_1 like Orginal 1, 후 insert into Memory_1 select * from Original 이런식으로요


그런데 중간에 MySQl Memory DB Table is FuLL 에러가 나는것입니다. 옮기는 절차는 Python 으로 스크립트를 만든 상태입니다. 


이때 구글링을 해보니 max_heap_table_size 변경해주라고 하더군요, 저 같은경우는 결론적으로 15GB 정도로 했는데, 중간중간 값을 변경해 가면서, 값을 올린 케이스 입니다. 


SET max_heap_table_size =16106127360 //Bytes





현재 당장은, Workbench 에 나온데로 처리는 하고 있습니다...


아무래도 이번에 바쁜일이 끝나면, NoSQL쪽이나 MySQL, MariaDB 쪽도 좀더 파봐야될것 같습니다.