Apache Hudi를 사용해서 Hudi 테이블을 만들어서 운영할 때 Hudi 테이블을 Hive 테이블로도 만들어서 사용하고 싶을 수 있다. Apache Hudi에 대한 소개는 이곳은 참고 : Apache Hudi 소개 일단 Hive 테이블로도 만들어두면 데이터를 확인하는 것이 간편하다. Hive Metastore에 테이블을 등록해두면 Spark 또는 Hive로 덜 번거롭게 데이터를 확인해볼 수 있기 때문이다. Hive Sync를 한다는 것은 Hudi 테이블 경로를 location으로 하는 Hive 테이블을 생성하거나 스키마를 동기화한다는 것을 의미한다. Hudi 테이블 데이터를 복제하여 새롭게 Hive 테이블용 데이터를 생성하고 복제된 데이터를 location으로 하는 Hive 테이블을 만든다는 것은 ..
HDFS는 RDBMS와는 다르게 기존 데이터를 업데이트해서 사용하는데 적합하지 않다. 하지만 로그성 데이터가 아니라 상태값이나 변할 수 있는 값을 가지는 데이터인 경우 변경 사항이 계속 발생하고 이것을 주기적으로 반영해야할 필요성이 있을 수 있다. 예를 들어 상품 판매 순위를 집계하려면, 상품 판매 로그와 상품 자체에 대한 정보가 있어야 한다. (로그에 상품에 대한 정보를 포함시킬 수도 있지만 최신 정보를 얻으려면 별도 정보가 필요할 것이다.) 로그는 변하지 않는 데이터이지만 상품에 대한 정보는 상품명, 카테고리 등이 계속 변할 수 있다. 이런 경우 데이터 전체 크기가 그렇게 크지 않은 경우 전체 데이터를 주기적으로 새로 dump할 수 있다. (Sqoop 등을 활용해서) 하지만 전체 데이터 크기가 커서 ..
hdfs 네임노드(namenode) 운영 시 OutOfMemory 에러가 나면서 data node들이 dead 상태가 되고block들이 corrupt 되었다고 메시지가 나오는 경우가 있었다. Namenode 프로세스 메모리는 디폴트가 1000m라서 1000m으로 되어있었는데 이 용량이 부족해지듯 하다.찾아보니 HDFS는 작은 파일들을 저장하는데 적합하지 않다고 한다. 파일 갯수가 많아질 수록 네임노드가 필요한 메모리 용량도 커지는데 파일을 작게 생성하고 지우지 않으면 문제가 될 수 있다. 일단 메모리를 3G로 늘렸고 파일 관리 방법에 대해서는 좀 더 찾아봐야겠다. 메모리를 늘리려면 {HADOOP_HOME}/etc/hadoop/hadoop-env.sh 파일에 다음 항목을 수정하면 된다.(데이터노드를 수정하..