๋ฐ˜์‘ํ˜•

hive-site.xml

<property>
<name>hive.metastore.transactional.event.listeners</name>
<value>
org.apache.hive.hcatalog.listener.DbNotificationListener,
org.apache.kudu.hive.metastore.KuduMetastorePlugin
</value>
</property>

<property>
<name>hive.metastore.disallow.incompatible.col.type.changes</name>
<value>false</value>
</property> <property>
<name>hive.metastore.notifications.add.thrift.objects</name>
<value>true</value>
</property>

kudu master start option add

--hive_metastore_uris=thrift:/test.co.kr:9083 user add

hdfs dfs -mkdir /user/impala
hdfs dfs -chown -R impala:hdfs /user/impala drwxr-xr-x - impala hdfs 0 2022-04-05 16:59 /user/impala

set acl

hdfs dfs -setfacl -m default:user:impala:rwx hdfs:///warehouse/tablespace/managed/hive
hdfs dfs -setfacl -m user:impala:rwx hdfs:///warehouse/tablespace/managed/hive
hdfs dfs -setfacl -m default:user:impala:rwx hdfs:///warehouse/tablespace/external/hive

hdfs dfs -getfacl hdfs:///warehouse/tablespace/external/hive
# file: hdfs:///warehouse/tablespace/external/hive
# owner: hive
# group: hadoop
# flags: --t
user::rwx
group::rwx
other::rwx
default:user::rwx
default:user:hive:rwx
default:user:impala:rwx
default:group::rwx
default:mask::rwx
default:other::rwx
hdfs dfs -getfacl hdfs:///warehouse/tablespace/managed/hive
# file: hdfs:///warehouse/tablespace/managed/hive
# owner: hive
# group: hadoop
user::rwx
group::---
other::---
default:user::rwx
default:user:hive:rwx
default:user:impala:rwx
default:group::---
default:mask::rwx
default:other::---
impala start option add

/etc/default/impala
KUDU_MASTER_HOSTS=test.co.kr:7051 ์ถ”๊ฐ€

---TEST---
$ hive
hive> CREATE DATABASE new_db_from_hive;
hive> CREATE TABLE new_db_from_hive.new_table_from_hive (x INT);
hive> quit;

$ impala-shell
> REFRESH new_db_from_hive.new_table_from_hive;
ERROR: AnalysisException: Database does not exist: new_db_from_hive

> INVALIDATE METADATA new_db_from_hive.new_table_from_hive; > SHOW DATABASES LIKE 'new*';
+--------------------+
| new_db_from_hive |
+--------------------+ > SHOW TABLES IN new_db_from_hive;
+---------------------+
| new_table_from_hive |
+---------------------+
Advanced hive-interactive-site
hive.strict.managed.tables
false
hive-site
hive.strict.managed.tables
false
hive-site, hivemetastore-site ์ฐจ์ด?ใ…‹




KUDU_MASTER_HOSTS=test.co.kr:7051

IMPALA_CATALOG_ARGS=" -log_dir=${IMPALA_LOG_DIR} -webserver_doc_root=${IMPALA_WEB_ROOT} -kudu_master_hosts=${KUDU_MASTER_HOSTS}"
IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT} -webserver_doc_root=${IMPALA_WEB_ROOT} -kudu_master_hosts=${KUDU_MASTER_HOSTS}"
IMPALA_SERVER_ARGS=" \
-log_dir=${IMPALA_LOG_DIR} \
-catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
-state_store_port=${IMPALA_STATE_STORE_PORT} \
-use_statestore \
-state_store_host=${IMPALA_STATE_STORE_HOST} \
-be_port=${IMPALA_BACKEND_PORT} \
-webserver_doc_root=${IMPALA_WEB_ROOT} \
-kudu_master_hosts=${KUDU_MASTER_HOSTS}"


kudu/sbin/kudu-master --rpc_bind_addresses=0.0.0.0:7051 --log-dir=kudu/logs/master --fs_wal_dir=/var/log/kudu_master --fs_data_dirs=/var/log/kudu_master --webserver_doc_root=kudu/www --webserver_port=8051 --master_addresses=hostname:7051 --hive_metastore_uris=thrift://hostname:9083

728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

Kudu Cluster ๊ตฌ์„ฑ์ •๋ณด ์˜ˆ์‹œ

kudu1.com kudu master
kudu2.com kudu master
kudu3.com kudu tserver
kudu4.com kudu tserver
kudu5.com kudu tserver

Master Server

kudu1  ๋…ธ๋“œ

[user@kudu1 ~] ${KUDU_HOME}/sbin/kudu-master/sbin/kudu-master --rpc_bind_addresses=0.0.0.0:7051 \
						              --log-dir=${KUDU_HOME}/logs/master \
                                                              --fs_wal_dir=${KUDU_HOME}/logs/master \
                                                              --fs_data_dirs=${KUDU_HOME}/logs/master \
                                                              --webserver_port=8051 \
                                                              --master_addresses=kudu1.com:7051,kudu2.com:7051 &

kudu2  ๋…ธ๋“œ

 

[user@kudu2 ~] ${KUDU_HOME}/sbin/kudu-master/sbin/kudu-master --rpc_bind_addresses=0.0.0.0:7051 \
						              --log-dir=${KUDU_HOME}/logs/master \
                                                              --fs_wal_dir=${KUDU_HOME}/logs/master \
                                                              --fs_data_dirs=${KUDU_HOME}/logs/master \
                                                              --webserver_port=8051 \
                                                              --master_addresses=kudu1.com:7051,kudu2.com:7051 &

 

Tablet Server 

kudu3 ๋…ธ๋“œ

[user@kudu3 ~] ${KUDU_HOME}/sbin/kudu-tserver --rpc_bind_addresses=0.0.0.0:7050 
					      --log-dir={KUDU_HOME}/logs/tserver \
                                              --fs_wal_dir={KUDU_HOME}/logs/tserver \
                                              --fs_data_dirs={KUDU_HOME}/logs/tserver \ 
                                              --webserver_port=8050 \
                                              --tserver_master_addrs=kudu1.com:7051,kudu2.com:7051 &

kudu4 ๋…ธ๋“œ

 

[user@kudu4 ~] ${KUDU_HOME}/sbin/kudu-tserver --rpc_bind_addresses=0.0.0.0:7050 
					      --log-dir={KUDU_HOME}/logs/tserver \
                                              --fs_wal_dir={KUDU_HOME}/logs/tserver \
                                              --fs_data_dirs={KUDU_HOME}/logs/tserver \ 
                                              --webserver_port=8050 \
                                              --tserver_master_addrs=kudu1.com:7051,kudu2.com:7051 &

kudu5 ๋…ธ๋“œ

 

[user@kudu5 ~] ${KUDU_HOME}/sbin/kudu-tserver --rpc_bind_addresses=0.0.0.0:7050 
					      --log-dir={KUDU_HOME}/logs/tserver \
                                              --fs_wal_dir={KUDU_HOME}/logs/tserver \
                                              --fs_data_dirs={KUDU_HOME}/logs/tserver \ 
                                              --webserver_port=8050 \
                                              --tserver_master_addrs=kudu1.com:7051,kudu2.com:7051 &

 

์˜ต์…˜ ์„ค๋ช…

--rpc_bind_addresses  
--log-dir ๋กœ๊ทธ ํŒŒ์ผ ์ €์žฅ ์œ„์น˜
--fs_wal_dir WAL ๋กœ๊ทธ ์ €์žฅ ์œ„์น˜
--fs_data_dirs ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ €์žฅ ์œ„์น˜
--webserver_port ์›น ํฌํŠธ๋ฒˆํ˜ธ ์ง€์ •
--tserver_master_addrs  ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„
ํƒœ๋ธ”๋ฆฟ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋งˆ์Šคํ„ฐ ์ฃผ์†Œ
๋งˆ์Šคํ„ฐ๋Š” ์ด ๊นƒ๋ฐœ์„ ์ฝ์ง€ ์•Š์Œ
--master_addresses
์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„, Master ์ปจ์„ผ์„œ์Šค ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๋ชจ๋“  RPC ์ฃผ์†Œ
๊ฐ’ ์ถ”๊ฐ€ ์•ˆํ•  ์‹œ standalone์œผ๋กœ ์‹คํ–‰๋จ

 

728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

kudu๊ฐ€ ๋ญ”์ง€, ์‚ฌ์šฉํ•ด๋ณด์ง€๋„ ๋ชปํ•˜๊ณ  rpm ๋นŒ๋“œ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๊ธ€์„ ์ผ๋‹ค๊ฐ€ ์ตœ๊ทผ์— ๋‹ค์‹œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

ํ˜„์žฌ๋„ kudu๋Š” ์‚ฌ์šฉํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‘ก์—์ฝ”์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ ์•„ํ‚คํ…์ณ๊ฐ€ ์œ ์‚ฌํ•œ ๋Š๋‚Œ์ด๋ผ ์ดํ•ดํ•˜๋Š”๋ฐ ํฌ๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š๋‹ค.

์ฒ˜์Œ์— kudu ์ฐพ์•„๋ดค์„ ๋•Œ

kudo์˜ ์•„ํ‚คํ…์ณ๋Š” hbase์™€ ์œ ์‚ฌํ•œ ์ ์ด ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ hbase๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๊ฑฐ๋‚˜ ํ–ˆ๋‹ค๋ฉด, kudu์ดํ•ดํ•˜๋Š”๋ฐ์—” ํฌ๊ฒŒ ์–ด๋ ค์›€์ด ์—†์„ ๊ฒƒ์ด๋‹ค.

kudu์—์„œ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๋Š” key-value ์ด๋‹ค.

 

์ผ๋‹จ, kudu๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ด๊ฒƒ ์ €๊ฒƒ ๋ณด๋‹ค๋ณด๋ฉด ๊ทธ๋ž˜์„œ hbase๊ฐ™์€๊ฑฐ๋ผ๋Š” ๊ฑด๊ฐ€? ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๋”ฐ๋ผ๋‹ค๋‹ˆ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ key-value๋กœ ์ธ๋ฐ, hbase ๋˜ํ•œ key-value๊ฐ€ ํ•ต์‹ฌํ‚ค์›Œ๋“œ์ด๋‹ค.

kudu ์ „์— hbase

kudu๋ฅผ ์•Œ์•„๋ณด๊ธฐ์ „์— hbase์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ฉด HDFS๋Š” append-only , immutable์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. HDFS์— ์ €์žฅ๋œ ํŒŒ์ผ์€ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. (๋ฎ์–ด์“ฐ๊ธฐํ•ด์„œ ์ˆ˜์ •)

Hbase์˜ ๊ฒฝ์šฐ HDFS์™€ ๋‹ฌ๋ฆฌ ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ณ  ๋žœ๋ค์œผ๋กœ ์ ‘๊ทผํ•ด ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ ‘๊ทผ์ด ๋น ๋ฅด๊ณ  low latency๋กœ input, output ๊ณผ์ •์—์„œ ์ง€์—ฐ์„ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

hbase์™€ kudu์˜ ์ฐจ์ด์ ์€ ?

๊ทธ๋Ÿผ kudu์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ??

hbase๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋‚ฎ๊ณ , kudu๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’๋‹ค๊ณ  ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

hbase์€ HDFS์—์„œ JSONํŒŒ์ผ, kudu๋Š” HDFS์—์„œ parquet ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค

kudu๋Š” parquet ์™€ hbase์˜ ์ž์‹๊ฒฉ์ด๋‹ค.

 

parquetํŒŒ์ผ์„ ๋‹ค๋ค„๋ดค๋‹ค๋ฉด, ์••์ถ•๋ฅ ์ด ๋†’์•„(์šฉ๋Ÿ‰์ด ์ž‘์Œ ๋“ฑ๋“ฑ) ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’๋‹ค๊ณ  ๋Š๋‚„ ์ˆ˜ ์žˆ๋‹ค.

 

parquet์ด ๋จผ๋””?

hbase์ฒ˜๋Ÿผ ์นผ๋Ÿผ๋ฒ ์ด์Šค ์Šคํ† ๋ฆฌ์ง€์ด๋ฉฐ, hbase๊ฐ™์€ parquet parquet๊ฐ™์€ hbase๋ผ๊ณ  ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

Kudu๋Š” Hbase์™€ parquet์˜ ํ˜ผ์ข… 

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜์—ฌ ์ €์žฅํ•  ๋•, Hbase์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๋ฉฐ,
์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ถ„์„ ์›Œํฌ๋กœ๋“œ ์‹คํ–‰ํ•  ๋•, parquet๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.

 

์ฟผ๋ฆฌ๋กœ ๊ธด ๊ธฐ๊ฐ„ ๋‚ด์—ญ ๋ฐ์ดํ„ฐ์™€ ์‹ค์‹œ๊ฐ„ ๋‹จ๊ธฐ ๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค

Hbase in-memory + Parquet columar layout = kudu

Kudu์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ๊ฒƒ๋“ค?

  • Impala
    • ๋ณ„๋„์˜ ์งˆ์˜ ๊ธฐ๋Šฅ์„ kudu์—์„œ ์ง€์›ํ•˜์ง€์•Š๊ธฐ์— impala์™€ ๊ฐ™์€ ์งˆ์˜ ์—”์ง„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
    • ํ™•์‹คํžˆ ํ•˜์ด๋ธŒ ์ฟผ๋ฆฌ์™€๋Š” ์†๋„๊ฐ€ ๋น ๋ฆ„์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๋‹ค. ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋งŒ ๋Œ๋ฆฌ๊ณ  ์ƒ์ฃผํ•˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด TEZ์—”์ง„ ์‚ฌ์šฉ์ž์ฒด๋„ ๋ถ€๋‹ด์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. MR์—”์ง„ ์“ฐ๋Š” ํ•˜์ด๋ธŒ์™€๋Š” ๋งค์šฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค
  • C++,java,python client
  • MapReduce
  • Spark

Kudu ์•„ํ‚คํ…์ณ

Kudu Master

  • Fault Tolerance ์žฅ์• ํ—ˆ์šฉ
  • Failover to backup masters ๋ฐฑ์—…์œผ๋กœ ์žฅ์• ์กฐ์น˜
  • Raft used for electing new leaders ์ƒˆ๋กœ์šด ๋ฆฌ๋” ๋ฝ‘์„๋•Œ Raft ์‚ฌ์šฉ
  • Only leader serves client request ๋ฆฌ๋”๋งŒ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ˆ˜์šฉ

Tablets

  • Hbase์˜ region๊ณผ ๋น„์Šทํ•จ
  • 3- 5 ๊ฐœ ๋ณต์ œ๊ฐ€๋Šฅํ•จ
  • ๋ณต์ œ๋Š” ํ•ฉ์˜๋ฅผ ์œ„ํ•ด Raft์˜ ๋ฆฌ๋”/ํŒ”๋กœ์›Œ ํŒจํ„ด์„ ์‚ฌ์šฉ
  • HDFS์•„๋‹Œ ๋กœ์ปฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•จ

 

Kudu ์‹คํ–‰

https://n-a-y-a.tistory.com/108

 

[kudu] kudu cluster๋ชจ๋“œ๋กœ ์‹คํ–‰

Kudu Cluster ๊ตฌ์„ฑ์ •๋ณด ์˜ˆ์‹œ kudu1.com kudu master kudu2.com kudu master kudu3.com kudu tserver kudu4.com kudu tserver kudu5.com kudu tserver Master Server kudu1 ๋…ธ๋“œ [user@kudu1 ~] ${KUDU_HOME}/sbin/kudu-master/sbin/kudu-master --rpc_bind_addresses=

n-a-y-a.tistory.com

 

Kudu Impala, Hive metastore ์—ฐ๋™

https://n-a-y-a.tistory.com/110

 

hive metastore - kudu - impala ์—ฐ๋™

hive-site.xml hive.metastore.transactional.event.listeners org.apache.hive.hcatalog.listener.DbNotificationListener, org.apache.kudu.hive.metastore.KuduMetastorePlugin hive.metastore.disallow.incompatible.col.type.changes false hive.metastore.notifications

n-a-y-a.tistory.com

๊ผญ ํ•˜์ด๋ธŒ๋ฉ”ํƒ€์Šคํ† ์–ด์™€๋Š” ์—ฐ๋™์„ ํ•˜์ง€์•Š์•„๋„ ๋ ๊ฒƒ๊ฐ™์ง€๋งŒ, ๊ธฐ์กด์— ํ•˜์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉด ์—ฐ๋™ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ํŽธ๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts