보통 hive는 map reduce를 엔진으로 사용 한다고 한다.
근데 이게 써보니까 좀 심각했다.
쿼리 속도가 왜이래~~
cpu 사용량은 또 왜이래~~
tez형을 불러 해결해 보고자 한다.
MapReduce는 크게 데이터를 원하는 Key-Value 형태로 만드는 작업인 Map과 Map 작업이 끝난 데이터를 합치는 Reduce 작업으로 나눌 수 있는데 이 Reduce 작업이 끝나고 중간 결과를 HDFS에 저장한 뒤 다시 Map과 Reduce 작업을 반복하는 과정에서 Disk I/O가 발생하게 되어 작업의 속도가 느려진다. 하지만, 테즈(Tez)는 미리 실행계획을 계산하여 DAG(비동기 사이클 그래프)로 작업 순서, 리소스를 최적화하여 Disk에 저장하지 않고 Map단계의 데이터를 메모리에 저장하여 Reduce에 전달함으로써 데이터 작업 처리속도를 증가시켜준다.
아래의 링크를 참고했다
https://snowturtle93.github.io/posts/Tez%EA%B0%80-MR%EB%B3%B4%EB%8B%A4-%EB%B9%A0%EB%A5%B8%EC%9D%B4%EC%9C%A0/
mkdir /tez
cd /tez
wget https://downloads.apache.org/tez/0.9.2/apache-tez-0.9.2-bin.tar.gz
tar -zxvf apache-tez-0.9.2-bin.tar.gz
rm apache-tez-0.9.2-bin.tar.gz
vi ~/.bashrc
export TEZ_HOME=/tez/apache-tez-0.9.2-bin
export TEZ_CONF=$TEZ_HOME/conf
export TEZ_JARS=$TEZ_HOME/*:$TEZ_HOME/lib/*
export HADOOP_CLASSPATH=$CLASSPATH:${TEZ_CONF}:${TEZ_JARS}
vi /hive_home/apache-hive-2.3.9-bin/conf/hive-site.xml
<property>
<name>tez.lib.uris</name>
<value>/user/tez</value>
</property>
vi /tez/apache-tez-0.9.2-bin/conf/tez-site.xml
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/user/tez/tez.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>hive.tez.container.size</name>
<value>3020</value>
</property>
</configuration>
hadoop fs -mkdir -p /user/tez
hadoop fs -put /tez/apache-tez-0.9.2-bin/share/tez.tar.gz /user/tez
cd /tez/apache-tez-0.9.2-bin
hadoop jar ez-examples-0.9.2.jar orderedwordcount /test /test_output
hive
set hive.execution.engine=tez;
오늘은 결과가 있다.
왜 그러냐면 쿼리 속도가 좋아 지긴 했는데
어..... 못쓰겠다. 그래도 느리다
그냥 기존에 쓰던 postgresql이 낫다.
원인을 알아봐야 하는데 찾기가 어렵다
map reduce에 대해 공부해야 할 것 같은데
하둡이 죽어가는 시대에 여기에 시간을 쏟을 순 없다.
일단 철수