<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hive on EUB's second brain</title><link>https://eubnara.github.io/ko/tags/hive/</link><description>Recent content in Hive on EUB's second brain</description><generator>Hugo -- 0.162.1</generator><language>ko-kr</language><lastBuildDate>Sat, 19 Oct 2024 16:26:00 +0900</lastBuildDate><atom:link href="https://eubnara.github.io/ko/tags/hive/index.xml" rel="self" type="application/rss+xml"/><item><title>Ranger에서 Hive로 권한 동기화 비활성화</title><link>https://eubnara.github.io/ko/computer-science/hadoop/dont-sync-privileges-from-ranger-to-hive/</link><pubDate>Sat, 19 Oct 2024 16:26:00 +0900</pubDate><guid>https://eubnara.github.io/ko/computer-science/hadoop/dont-sync-privileges-from-ranger-to-hive/</guid><description>&lt;p&gt;Secure Hadoop 클러스터에서 Apache Ranger로 인가를 수행할 때, Hive 4.x.x 미만 버전은 기본적으로 모든 Ranger Hive 정책을 Hive용 RDBMS에 동기화한다. 이는 불필요하며 DB에 높은 부하를 유발할 수 있다. (&lt;a href="https://issues.apache.org/jira/browse/HIVE-25391"&gt;https://issues.apache.org/jira/browse/HIVE-25391&lt;/a&gt;) HiveServer2에서 다음 설정으로 비활성화할 수 있다.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hive.privilege.synchronizer=false
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>"jute.maxbuffer" 관련 모니터링 지표</title><link>https://eubnara.github.io/ko/computer-science/hadoop/monitoring-jute.maxbuffer/</link><pubDate>Sat, 25 May 2024 22:34:00 +0900</pubDate><guid>https://eubnara.github.io/ko/computer-science/hadoop/monitoring-jute.maxbuffer/</guid><description>&lt;p&gt;ZooKeeper 사용 시 &amp;ldquo;jute.maxbuffer&amp;quot;라는 설정이 있다. ZooKeeper 클라이언트 또는 서버 측에서 설정 가능하며, 클라이언트 측 설정값은 서버 측보다 낮아야 한다.
클라이언트가 이 설정값보다 큰 데이터를 받으면 오류가 발생한다.&lt;/p&gt;
&lt;p&gt;관련 이슈:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/HIVE-21993"&gt;https://issues.apache.org/jira/browse/HIVE-21993&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/YARN-2962"&gt;https://issues.apache.org/jira/browse/YARN-2962&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이러한 오류를 방지하기 위해 ZooKeeper에서 다음 지표를 모니터링해야 한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;last_client_response_size&lt;/code&gt; 또는 &lt;code&gt;max_client_response_size&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;client_response_size&lt;/code&gt;는 ZooKeeper 서버에서 클라이언트로의 응답 크기(바이트)다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_proposal_size&lt;/code&gt; 또는 &lt;code&gt;max_proposal_size&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;proposal_size&lt;/code&gt;는 ZooKeeper 서버 리더가 팔로워로 보내는 proposal 크기(바이트)다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proposal&lt;/code&gt;에 대한 자세한 내용은 &lt;a href="https://zookeeper.apache.org/doc/r3.7.1/zookeeperInternals.html"&gt;https://zookeeper.apache.org/doc/r3.7.1/zookeeperInternals.html&lt;/a&gt; 참고.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 값들은 &lt;code&gt;jute.maxbuffer&lt;/code&gt;보다 낮아야 한다. 이 설정은 &lt;code&gt;-Djute.maxbuffer=10485760&lt;/code&gt; (10MB)와 같은 JVM 인자로 설정할 수 있다.&lt;/p&gt;</description></item><item><title>MySQL 사용 시 Hive Metastore 체크리스트</title><link>https://eubnara.github.io/ko/computer-science/hadoop/hivemetastore-mysql/</link><pubDate>Thu, 12 Oct 2023 08:34:00 +0900</pubDate><guid>https://eubnara.github.io/ko/computer-science/hadoop/hivemetastore-mysql/</guid><description>&lt;h1 id="mysql-index"&gt;MySQL Index&lt;/h1&gt;
&lt;p&gt;Hive Metastore가 RDBMS에 메타데이터를 저장/조회할 때 비용이 큰 작업이 있다.&lt;br&gt;
다음은 관련 공식 Hive 패치의 인덱스 생성 SQL이다.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;-- HIVE-21063
CREATE UNIQUE INDEX `NOTIFICATION_LOG_EVENT_ID` ON NOTIFICATION_LOG (`EVENT_ID`) USING BTREE;
-- HIVE-21487
CREATE INDEX COMPLETED_COMPACTIONS_RES ON COMPLETED_COMPACTIONS (CC_DATABASE,CC_TABLE,CC_PARTITION);
-- HIVE-27165
DROP INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS;
CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (DB_NAME, TABLE_NAME, COLUMN_NAME, CAT_NAME) USING BTREE;
DROP INDEX PCS_STATS_IDX ON PART_COL_STATS;
CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME,CAT_NAME) USING BTREE;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Hive 업그레이드 시 RDBMS 테이블에 변경사항이 있을 수 있다. 버전별 필요한 SQL은 &lt;a href="https://github.com/apache/hive/tree/master/standalone-metastore/metastore-server/src/main/sql/mysql"&gt;https://github.com/apache/hive/tree/master/standalone-metastore/metastore-server/src/main/sql/mysql&lt;/a&gt; 에서 확인 가능하다.&lt;/p&gt;</description></item><item><title>"HADOOP_CLASSPATH" 환경 변수에 대해</title><link>https://eubnara.github.io/ko/computer-science/hadoop/hadoop-classpath/</link><pubDate>Sun, 05 Feb 2023 16:54:58 +0900</pubDate><guid>https://eubnara.github.io/ko/computer-science/hadoop/hadoop-classpath/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html#HADOOP_CLASSPATH"&gt;https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html#HADOOP_CLASSPATH&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hadoop 생태계에서 &lt;code&gt;HADOOP_CLASSPATH&lt;/code&gt; 환경 변수는 다양한 곳에서 사용된다. &lt;code&gt;Hive&lt;/code&gt;도 이 변수를 사용한다.
&lt;code&gt;beeline&lt;/code&gt; 같은 스크립트에서 &lt;code&gt;HADOOP_CLASSPATH&lt;/code&gt; 변수가 어떻게 사용되는지 궁금했다. Hive 소스 코드에서는 &lt;code&gt;HADOOP_CLASSPATH&lt;/code&gt; 변수를 찾을 수 없었다.
알고 보니 &lt;code&gt;beeline&lt;/code&gt; 실행 시 &lt;code&gt;hadoop jar&lt;/code&gt; 명령을 사용한다. (&lt;a href="https://github.com/apache/hive/blob/rel/release-3.1.3/bin/ext/beeline.sh#L35"&gt;https://github.com/apache/hive/blob/rel/release-3.1.3/bin/ext/beeline.sh#L35&lt;/a&gt;)
이때 &lt;code&gt;RunJar.java&lt;/code&gt;가 사용되며, 여기서 &lt;code&gt;HADOOP_CLASSPATH&lt;/code&gt;가 &lt;code&gt;CLASSPATH&lt;/code&gt; 설정에 사용된다. (&lt;a href="https://github.com/apache/hadoop/blob/rel/release-3.3.4/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java#L347-L351"&gt;https://github.com/apache/hadoop/blob/rel/release-3.3.4/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java#L347-L351&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Hadoop 생태계에서 &lt;code&gt;RunJar#main&lt;/code&gt;을 사용하는 경우, 대부분 &lt;code&gt;HADOOP_CLASSPATH&lt;/code&gt; 환경 변수를 따르게 된다.&lt;/p&gt;</description></item></channel></rss>