[{"content":"toolbox는 Linux 데스크탑/노트북 환경을 보강하기 위해 직접 만들어 쓰는 잡다한 유틸 모음 저장소다. 각 도구는 독립된 디렉터리에 자체 README와 설치 스크립트를 갖춘 단위로 구성되어 있다.\n현재 등록된 도구는 다음과 같다.\ncharger-watts USB-C PD 충전기의 실제 협상 와트수를 CLI와 KDE Plasma 6 패널 위젯으로 표시한다. ThinkPad Embedded Controller의 HWAT 필드를 ec_sys 모듈로 직접 읽어 와트수를 가져오며, ThinkPad가 아닌 경우 UCSI sysfs로 fallback한다. Plasma 위젯은 폴링 없이 충전기 연결/해제 이벤트 발생 시에만 EC를 읽어 갱신하는 event-driven 방식이다.\npr-keepalive 장기간 방치된 GitHub PR이 stale-bot에 자동으로 닫히지 않도록 주기적으로 짧은 코멘트를 다는 Rust 도구다. gh CLI로 PR 상태를 확인하고, 임계일(기본 80일)을 넘은 PR을 pending 상태로 마킹한 후 데스크탑 알림을 띄운다. 사용자가 --confirm 플래그로 승인할 때만 실제 코멘트를 포스팅하며, systemd user timer가 부팅 시와 매 24시간마다 자동 실행한다.\nsamsung-clipboard-cleaner 삼성 One UI가 클립보드 기록을 암호화 없이 영구 저장하는 문제를 해결하기 위해 만든 Android(Kotlin) 앱이다. ClipboardManager.setPrimaryClip()을 50회 연속 호출해 더미 클립을 flood하여 기존 기록을 밀어내는 방식으로 동작한다. AlarmManager를 통한 매일 자동 실행(기본 02:00)과 부팅 시 스케줄 재등록을 지원한다.\n각 도구의 자세한 사용법과 설치 방법은 저장소 내 각 디렉터리의 README를 참고하면 된다.\n","permalink":"https://eubnara.github.io/ko/tools/toolbox-intro/","summary":"\u003cp\u003e\u003ca href=\"https://github.com/eubnara/toolbox\"\u003etoolbox\u003c/a\u003e는 Linux 데스크탑/노트북 환경을 보강하기 위해 직접 만들어 쓰는 잡다한 유틸 모음 저장소다.\n각 도구는 독립된 디렉터리에 자체 README와 설치 스크립트를 갖춘 단위로 구성되어 있다.\u003c/p\u003e\n\u003cp\u003e현재 등록된 도구는 다음과 같다.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"charger-watts\"\u003e\u003ca href=\"https://github.com/eubnara/toolbox/tree/main/charger-watts\"\u003echarger-watts\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eUSB-C PD 충전기의 실제 협상 와트수를 CLI와 KDE Plasma 6 패널 위젯으로 표시한다.\nThinkPad Embedded Controller의 \u003ccode\u003eHWAT\u003c/code\u003e 필드를 \u003ccode\u003eec_sys\u003c/code\u003e 모듈로 직접 읽어 와트수를 가져오며, ThinkPad가 아닌 경우 UCSI sysfs로 fallback한다.\nPlasma 위젯은 폴링 없이 충전기 연결/해제 이벤트 발생 시에만 EC를 읽어 갱신하는 event-driven 방식이다.\u003c/p\u003e","title":"toolbox: 직접 만들어 쓰는 유틸 모음"},{"content":"Sonatype Nexus Community Edition 사용 예 3.77 이상 버전을 써야 CE 버전에서도 cargo repository를 사용할 수 있다. 단, 3.77 버전부터는 사용량 hard limit이 존재한다. 다음 명령으로 간단히 로컬에 구동: docker run -d -p 8081:8081 --name nexus sonatype/nexus3 cargo-proxy로 repository를 만들었다고 가정, remote URL은 https://index.crates.io로 설정한다. .cargo/config.toml에 다음과 같이 내용 추가: ❯ cat .cargo/config.toml [registries.nexus] index = \u0026#34;sparse+http://localhost:8081/repository/cargo-proxy/\u0026#34; [registry] default = \u0026#34;nexus\u0026#34; [source.crates-io] replace-with = \u0026#34;nexus\u0026#34; [source.nexus] registry = \u0026#34;sparse+http://localhost:8081/repository/cargo-proxy/\u0026#34; https://index.crates.io/의 설명을 보면 sparse 프로토콜을 사용한다. 위 config.toml에서 sparse+를 빼먹으면 정상 동작하지 않는다.\n빌드: ❯ cargo build 참고:\nhttps://gist.github.com/mashintsev/3e6ab7840d6233ab7932565d056b8158 https://doc.rust-lang.org/cargo/reference/source-replacement.html ","permalink":"https://eubnara.github.io/ko/computer-science/rust/cargo_repository_proxy/","summary":"\u003ch1 id=\"sonatype-nexus-community-edition-사용-예\"\u003eSonatype Nexus Community Edition 사용 예\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e3.77 이상 버전을 써야 CE 버전에서도 cargo repository를 사용할 수 있다. 단, 3.77 버전부터는 사용량 hard limit이 존재한다. 다음 명령으로 간단히 로컬에 구동:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003edocker run -d -p 8081:8081 --name nexus sonatype/nexus3\n\u003c/code\u003e\u003c/pre\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecargo-proxy\u003c/code\u003e로 repository를 만들었다고 가정, remote URL은 \u003ccode\u003ehttps://index.crates.io\u003c/code\u003e로 설정한다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"nexus\" loading=\"lazy\" src=\"/images/computer-science/rust/cargo_repository_proxy/nexus.png\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e.cargo/config.toml\u003c/code\u003e에 다음과 같이 내용 추가:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e❯ cat .cargo/config.toml\n[registries.nexus]\nindex = \u0026#34;sparse+http://localhost:8081/repository/cargo-proxy/\u0026#34;\n\n[registry]\ndefault = \u0026#34;nexus\u0026#34;\n\n[source.crates-io]\nreplace-with = \u0026#34;nexus\u0026#34;\n\n[source.nexus]\nregistry = \u0026#34;sparse+http://localhost:8081/repository/cargo-proxy/\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003ca href=\"https://index.crates.io/\"\u003ehttps://index.crates.io/\u003c/a\u003e의 설명을 보면 \u003ccode\u003esparse\u003c/code\u003e 프로토콜을 사용한다. 위 config.toml에서 \u003ccode\u003esparse+\u003c/code\u003e를 빼먹으면 정상 동작하지 않는다.\u003c/p\u003e","title":"cargo/rust 용 Proxy 저장소"},{"content":"Secure Hadoop 클러스터에서 Apache Ranger로 인가를 수행할 때, Hive 4.x.x 미만 버전은 기본적으로 모든 Ranger Hive 정책을 Hive용 RDBMS에 동기화한다. 이는 불필요하며 DB에 높은 부하를 유발할 수 있다. (https://issues.apache.org/jira/browse/HIVE-25391) HiveServer2에서 다음 설정으로 비활성화할 수 있다.\nhive.privilege.synchronizer=false ","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/dont-sync-privileges-from-ranger-to-hive/","summary":"\u003cp\u003eSecure Hadoop 클러스터에서 Apache Ranger로 인가를 수행할 때, Hive 4.x.x 미만 버전은 기본적으로 모든 Ranger Hive 정책을 Hive용 RDBMS에 동기화한다. 이는 불필요하며 DB에 높은 부하를 유발할 수 있다. (\u003ca href=\"https://issues.apache.org/jira/browse/HIVE-25391\"\u003ehttps://issues.apache.org/jira/browse/HIVE-25391\u003c/a\u003e) HiveServer2에서 다음 설정으로 비활성화할 수 있다.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ehive.privilege.synchronizer=false\n\u003c/code\u003e\u003c/pre\u003e","title":"Ranger에서 Hive로 권한 동기화 비활성화"},{"content":"ZooKeeper 사용 시 \u0026ldquo;jute.maxbuffer\u0026quot;라는 설정이 있다. ZooKeeper 클라이언트 또는 서버 측에서 설정 가능하며, 클라이언트 측 설정값은 서버 측보다 낮아야 한다. 클라이언트가 이 설정값보다 큰 데이터를 받으면 오류가 발생한다.\n관련 이슈:\nhttps://issues.apache.org/jira/browse/HIVE-21993 https://issues.apache.org/jira/browse/YARN-2962 이러한 오류를 방지하기 위해 ZooKeeper에서 다음 지표를 모니터링해야 한다.\nlast_client_response_size 또는 max_client_response_size client_response_size는 ZooKeeper 서버에서 클라이언트로의 응답 크기(바이트)다. last_proposal_size 또는 max_proposal_size proposal_size는 ZooKeeper 서버 리더가 팔로워로 보내는 proposal 크기(바이트)다. proposal에 대한 자세한 내용은 https://zookeeper.apache.org/doc/r3.7.1/zookeeperInternals.html 참고. 이 값들은 jute.maxbuffer보다 낮아야 한다. 이 설정은 -Djute.maxbuffer=10485760 (10MB)와 같은 JVM 인자로 설정할 수 있다.\n","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/monitoring-jute.maxbuffer/","summary":"\u003cp\u003eZooKeeper 사용 시 \u0026ldquo;jute.maxbuffer\u0026quot;라는 설정이 있다. ZooKeeper 클라이언트 또는 서버 측에서 설정 가능하며, 클라이언트 측 설정값은 서버 측보다 낮아야 한다.\n클라이언트가 이 설정값보다 큰 데이터를 받으면 오류가 발생한다.\u003c/p\u003e\n\u003cp\u003e관련 이슈:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HIVE-21993\"\u003ehttps://issues.apache.org/jira/browse/HIVE-21993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/YARN-2962\"\u003ehttps://issues.apache.org/jira/browse/YARN-2962\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e이러한 오류를 방지하기 위해 ZooKeeper에서 다음 지표를 모니터링해야 한다.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elast_client_response_size\u003c/code\u003e 또는 \u003ccode\u003emax_client_response_size\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eclient_response_size\u003c/code\u003e는 ZooKeeper 서버에서 클라이언트로의 응답 크기(바이트)다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elast_proposal_size\u003c/code\u003e 또는 \u003ccode\u003emax_proposal_size\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eproposal_size\u003c/code\u003e는 ZooKeeper 서버 리더가 팔로워로 보내는 proposal 크기(바이트)다.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eproposal\u003c/code\u003e에 대한 자세한 내용은 \u003ca href=\"https://zookeeper.apache.org/doc/r3.7.1/zookeeperInternals.html\"\u003ehttps://zookeeper.apache.org/doc/r3.7.1/zookeeperInternals.html\u003c/a\u003e 참고.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e이 값들은 \u003ccode\u003ejute.maxbuffer\u003c/code\u003e보다 낮아야 한다. 이 설정은 \u003ccode\u003e-Djute.maxbuffer=10485760\u003c/code\u003e (10MB)와 같은 JVM 인자로 설정할 수 있다.\u003c/p\u003e","title":"\"jute.maxbuffer\" 관련 모니터링 지표"},{"content":"MySQL Index Hive Metastore가 RDBMS에 메타데이터를 저장/조회할 때 비용이 큰 작업이 있다.\n다음은 관련 공식 Hive 패치의 인덱스 생성 SQL이다.\n-- 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; Hive 업그레이드 시 RDBMS 테이블에 변경사항이 있을 수 있다. 버전별 필요한 SQL은 https://github.com/apache/hive/tree/master/standalone-metastore/metastore-server/src/main/sql/mysql 에서 확인 가능하다.\n추가로, NOTIFICATION_LOG 테이블의 EVENT_TIME 컬럼에 대해 slow query가 발견되었다. 공식 패치는 없지만 다음 인덱스를 생성하여 해결했다:\nCREATE INDEX `NOTIFICATION_LOG_EVENT_TIME` ON NOTIFICATION_LOG (`EVENT_TIME`) USING BTREE; MySQL 8.x 사용 시 MySQL \u0026gt;= 8.0부터 기본 문자셋과 collation이 utf8mb4와 utf8mb4_0900_ai_ci로 변경되었다. Apache Hive에서 관련 패치가 있지만 완전히 해결되지는 않았다. (예: https://issues.apache.org/jira/browse/HIVE-18083) 따라서 Hive 3.1.3과 MySQL \u0026gt;= 8.0을 함께 사용하려면 JDBC URL에 다음과 같은 mysql connection 옵션을 설정하는 것을 권장한다:\njdbc:mysql://{your_mysql_host}/{database}?characterEncoding=latin1\u0026amp;connectionCollation=latin1_bin 참고:\nhttps://dev.mysql.com/doc/connector-j/8.1/en/connector-j-reference-charsets.html https://dev.mysql.com/doc/connector-j/8.1/en/connector-j-connp-props-session.html#cj-conn-prop_connectionCollation ","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/hivemetastore-mysql/","summary":"\u003ch1 id=\"mysql-index\"\u003eMySQL Index\u003c/h1\u003e\n\u003cp\u003eHive Metastore가 RDBMS에 메타데이터를 저장/조회할 때 비용이 큰 작업이 있다.\u003cbr\u003e\n다음은 관련 공식 Hive 패치의 인덱스 생성 SQL이다.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e-- HIVE-21063\nCREATE UNIQUE INDEX `NOTIFICATION_LOG_EVENT_ID` ON NOTIFICATION_LOG (`EVENT_ID`) USING BTREE;\n\n-- HIVE-21487\nCREATE INDEX COMPLETED_COMPACTIONS_RES ON COMPLETED_COMPACTIONS (CC_DATABASE,CC_TABLE,CC_PARTITION);\n\n-- HIVE-27165\nDROP INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS;\nCREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (DB_NAME, TABLE_NAME, COLUMN_NAME, CAT_NAME) USING BTREE;\nDROP INDEX PCS_STATS_IDX ON PART_COL_STATS;\nCREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME,CAT_NAME) USING BTREE;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eHive 업그레이드 시 RDBMS 테이블에 변경사항이 있을 수 있다. 버전별 필요한 SQL은 \u003ca href=\"https://github.com/apache/hive/tree/master/standalone-metastore/metastore-server/src/main/sql/mysql\"\u003ehttps://github.com/apache/hive/tree/master/standalone-metastore/metastore-server/src/main/sql/mysql\u003c/a\u003e 에서 확인 가능하다.\u003c/p\u003e","title":"MySQL 사용 시 Hive Metastore 체크리스트"},{"content":"https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html\n운영 체제 버그로 인해 rdns = false 설정이 reverse DNS lookup을 비활성화하지 못할 수 있다. 일부 GNU libc 버전의 getaddrinfo()는 필요하지 않은 경우에도 PTR 레코드를 조회하는 버그가 있다. MIT Kerberos 릴리스 krb5-1.10.2 이상 및 krb5-1.9.x 시리즈(krb5-1.9.4 이상)에는 이 문제에 대한 해결 방법이 포함되어 있다.\nHadoop 생태계에서 krb5.conf의 \u0026ldquo;rdns = false\u0026quot;가 적용되지 않는 경우가 있다. /etc/hosts를 수정하거나 PTR 레코드를 등록하여 해결할 수 있다.\n1. HiveMetaStoreClient https://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246\nif (uriResolverHook != null) { metastoreURIArray.addAll(uriResolverHook.resolveURI(tmpUri)); } else { metastoreURIArray.add(new URI( tmpUri.getScheme(), tmpUri.getUserInfo(), HadoopThriftAuthBridge.getBridge().getCanonicalHostName(tmpUri.getHost()), tmpUri.getPort(), tmpUri.getPath(), tmpUri.getQuery(), tmpUri.getFragment() )); } metastore.thrift.uris 또는 hive.metastore.uris에서 canonical hostname을 확인하는 로직이 있다. 해결된 hostname이 원하는 대로 나오지 않는다면 다음 가지 해결 방법이 있다.\n/etc/hosts 수정 HiveMetastore 서버에 PTR 레코드 등록 (확실하지 않음) metastore.uri.resolver 또는 hive.metastore.uri.resolver 시도 https://issues.apache.org/jira/browse/HIVE-18347 2. KuduClient Java lib https://issues.apache.org/jira/browse/KUDU-2032 https://issues.apache.org/jira/browse/KUDU-2096 https://issues.apache.org/jira/browse/KUDU-3415 PTR 레코드를 등록하거나 KUDU-3415 해결을 시도한다.\n3. HBase client hbase-site.xml에 다음 설정을 추가한다:\nhbase.unsafe.client.kerberos.hostname.disable.reversedns=true https://github.com/apache/hbase/blob/25455b6fe3cbd8f093fd9bc8c51a1bab95353a62/hbase-client/src/main/java/org/apache/hadoop/hbase/security/provider/GssSaslClientAuthenticationProvider.java#L48 https://hbase.apache.org/book.html#hbase_default_configurations 참고 https://deview.kr/data/deview/session/attach/1500_T3_이영곤_대용량_멀티테넌트_시큐어_하둡_클러스터_운영_경험기.pdf ","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/rdns-false-not-work/","summary":"\u003cp\u003e\u003ca href=\"https://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html\"\u003ehttps://web.mit.edu/kerberos/krb5-1.13/doc/admin/princ_dns.html\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e운영 체제 버그로 인해 rdns = false 설정이 reverse DNS lookup을 비활성화하지 못할 수 있다. 일부 GNU libc 버전의 getaddrinfo()는 필요하지 않은 경우에도 PTR 레코드를 조회하는 버그가 있다. MIT Kerberos 릴리스 krb5-1.10.2 이상 및 krb5-1.9.x 시리즈(krb5-1.9.4 이상)에는 이 문제에 대한 해결 방법이 포함되어 있다.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eHadoop 생태계에서 krb5.conf의 \u0026ldquo;rdns = false\u0026quot;가 적용되지 않는 경우가 있다. \u003ccode\u003e/etc/hosts\u003c/code\u003e를 수정하거나 PTR 레코드를 등록하여 해결할 수 있다.\u003c/p\u003e\n\u003ch1 id=\"1-hivemetastoreclient\"\u003e1. HiveMetaStoreClient\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246\"\u003ehttps://github.com/apache/hive/blob/rel/release-3.1.3/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#L246\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-java\" data-lang=\"java\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eif\u003c/span\u003e (uriResolverHook \u003cspan style=\"color:#f92672\"\u003e!=\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003enull\u003c/span\u003e) {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  metastoreURIArray.\u003cspan style=\"color:#a6e22e\"\u003eaddAll\u003c/span\u003e(uriResolverHook.\u003cspan style=\"color:#a6e22e\"\u003eresolveURI\u003c/span\u003e(tmpUri));\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e} \u003cspan style=\"color:#66d9ef\"\u003eelse\u003c/span\u003e {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  metastoreURIArray.\u003cspan style=\"color:#a6e22e\"\u003eadd\u003c/span\u003e(\u003cspan style=\"color:#66d9ef\"\u003enew\u003c/span\u003e URI(\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetScheme\u003c/span\u003e(),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetUserInfo\u003c/span\u003e(),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          HadoopThriftAuthBridge.\u003cspan style=\"color:#a6e22e\"\u003egetBridge\u003c/span\u003e().\u003cspan style=\"color:#a6e22e\"\u003egetCanonicalHostName\u003c/span\u003e(tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetHost\u003c/span\u003e()),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetPort\u003c/span\u003e(),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetPath\u003c/span\u003e(),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetQuery\u003c/span\u003e(),\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          tmpUri.\u003cspan style=\"color:#a6e22e\"\u003egetFragment\u003c/span\u003e()\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  ));\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003emetastore.thrift.uris\u003c/code\u003e 또는 \u003ccode\u003ehive.metastore.uris\u003c/code\u003e에서 canonical hostname을 확인하는 로직이 있다. 해결된 hostname이 원하는 대로 나오지 않는다면 다음 가지 해결 방법이 있다.\u003c/p\u003e","title":"krb5.conf의 \"rdns = false\"가 Hadoop 생태계에서 동작하지 않는 사례"},{"content":"HDFS 재시작 없이 설정 변경 (reconfigure) https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html\n재시작 없이 변경 가능한 key는 제한적임 $ hdfs dfsadmin -reconfig namenode nn1.example.com:8020 properties Node [nn1.example.com:8020] Reconfigurable properties: dfs.block.placement.ec.classname dfs.block.replicator.classname dfs.heartbeat.interval dfs.image.parallel.load dfs.namenode.avoid.read.slow.datanode dfs.namenode.block-placement-policy.exclude-slow-nodes.enabled dfs.namenode.heartbeat.recheck-interval dfs.namenode.max.slowpeer.collect.nodes dfs.namenode.replication.max-streams dfs.namenode.replication.max-streams-hard-limit dfs.namenode.replication.work.multiplier.per.iteration dfs.storage.policy.satisfier.mode fs.protected.directories hadoop.caller.context.enabled ipc.8020.backoff.enable ","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/commands/","summary":"\u003ch1 id=\"hdfs\"\u003eHDFS\u003c/h1\u003e\n\u003ch2 id=\"재시작-없이-설정-변경-reconfigure\"\u003e재시작 없이 설정 변경 (reconfigure)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html\"\u003ehttps://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e재시작 없이 변경 가능한 key는 제한적임\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ hdfs dfsadmin -reconfig namenode nn1.example.com:8020 properties\nNode [nn1.example.com:8020] Reconfigurable properties:\ndfs.block.placement.ec.classname\ndfs.block.replicator.classname\ndfs.heartbeat.interval\ndfs.image.parallel.load\ndfs.namenode.avoid.read.slow.datanode\ndfs.namenode.block-placement-policy.exclude-slow-nodes.enabled\ndfs.namenode.heartbeat.recheck-interval\ndfs.namenode.max.slowpeer.collect.nodes\ndfs.namenode.replication.max-streams\ndfs.namenode.replication.max-streams-hard-limit\ndfs.namenode.replication.work.multiplier.per.iteration\ndfs.storage.policy.satisfier.mode\nfs.protected.directories\nhadoop.caller.context.enabled\nipc.8020.backoff.enable\n\u003c/code\u003e\u003c/pre\u003e","title":"Hadoop 명령어 모음"},{"content":" https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html#HADOOP_CLASSPATH Hadoop 생태계에서 HADOOP_CLASSPATH 환경 변수는 다양한 곳에서 사용된다. Hive도 이 변수를 사용한다. beeline 같은 스크립트에서 HADOOP_CLASSPATH 변수가 어떻게 사용되는지 궁금했다. Hive 소스 코드에서는 HADOOP_CLASSPATH 변수를 찾을 수 없었다. 알고 보니 beeline 실행 시 hadoop jar 명령을 사용한다. (https://github.com/apache/hive/blob/rel/release-3.1.3/bin/ext/beeline.sh#L35) 이때 RunJar.java가 사용되며, 여기서 HADOOP_CLASSPATH가 CLASSPATH 설정에 사용된다. (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)\nHadoop 생태계에서 RunJar#main을 사용하는 경우, 대부분 HADOOP_CLASSPATH 환경 변수를 따르게 된다.\n","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/hadoop-classpath/","summary":"\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html#HADOOP_CLASSPATH\"\u003ehttps://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html#HADOOP_CLASSPATH\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHadoop 생태계에서 \u003ccode\u003eHADOOP_CLASSPATH\u003c/code\u003e 환경 변수는 다양한 곳에서 사용된다. \u003ccode\u003eHive\u003c/code\u003e도 이 변수를 사용한다.\n\u003ccode\u003ebeeline\u003c/code\u003e 같은 스크립트에서 \u003ccode\u003eHADOOP_CLASSPATH\u003c/code\u003e 변수가 어떻게 사용되는지 궁금했다. Hive 소스 코드에서는 \u003ccode\u003eHADOOP_CLASSPATH\u003c/code\u003e 변수를 찾을 수 없었다.\n알고 보니 \u003ccode\u003ebeeline\u003c/code\u003e 실행 시 \u003ccode\u003ehadoop jar\u003c/code\u003e 명령을 사용한다. (\u003ca href=\"https://github.com/apache/hive/blob/rel/release-3.1.3/bin/ext/beeline.sh#L35\"\u003ehttps://github.com/apache/hive/blob/rel/release-3.1.3/bin/ext/beeline.sh#L35\u003c/a\u003e)\n이때 \u003ccode\u003eRunJar.java\u003c/code\u003e가 사용되며, 여기서 \u003ccode\u003eHADOOP_CLASSPATH\u003c/code\u003e가 \u003ccode\u003eCLASSPATH\u003c/code\u003e 설정에 사용된다. (\u003ca 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\"\u003ehttps://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\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eHadoop 생태계에서 \u003ccode\u003eRunJar#main\u003c/code\u003e을 사용하는 경우, 대부분 \u003ccode\u003eHADOOP_CLASSPATH\u003c/code\u003e 환경 변수를 따르게 된다.\u003c/p\u003e","title":"\"HADOOP_CLASSPATH\" 환경 변수에 대해"},{"content":" 참고 https://docs.cloudera.com/cloudera-manager/7.5.5/security-troubleshooting/cm-security-troubleshooting.pdf https://search-guard.com/elasticsearch-kibana-kerberos/ Hadoop 데몬(NameNode, DataNode, JournalNode, ResourceManager, NodeManager 등)이 동일한 kerberos keytab(/etc/security/keytabs/spnego.service.keytab)과 principal(HTTP/_HOST@{REALM})을 공유하기 때문에 발생하는 문제로 추정된다. 특정 상황에서 DataNode가 이를 replay attack으로 오판한다.\n다음 JVM 시스템 속성을 Hadoop 데몬에 추가하면 해결된다. Java 프로세스가 replay cache를 사용하지 않게 된다.\n-Dsun.security.krb5.rcache=none ","permalink":"https://eubnara.github.io/ko/computer-science/hadoop/spnego-request-is-a-replay/","summary":"\u003cul\u003e\n\u003cli\u003e참고\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.cloudera.com/cloudera-manager/7.5.5/security-troubleshooting/cm-security-troubleshooting.pdf\"\u003ehttps://docs.cloudera.com/cloudera-manager/7.5.5/security-troubleshooting/cm-security-troubleshooting.pdf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://search-guard.com/elasticsearch-kibana-kerberos/\"\u003ehttps://search-guard.com/elasticsearch-kibana-kerberos/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHadoop 데몬(NameNode, DataNode, JournalNode, ResourceManager, NodeManager 등)이 동일한 kerberos keytab(\u003ccode\u003e/etc/security/keytabs/spnego.service.keytab\u003c/code\u003e)과 principal(\u003ccode\u003eHTTP/_HOST@{REALM}\u003c/code\u003e)을 공유하기 때문에 발생하는 문제로 추정된다. 특정 상황에서 DataNode가 이를 replay attack으로 오판한다.\u003c/p\u003e\n\u003cp\u003e다음 JVM 시스템 속성을 Hadoop 데몬에 추가하면 해결된다. Java 프로세스가 replay cache를 사용하지 않게 된다.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e-Dsun.security.krb5.rcache=none\n\u003c/code\u003e\u003c/pre\u003e","title":"SPNEGO 활성화 Hadoop DataNode가 Kerberos \"replay attack\"을 오판하는 문제"},{"content":"제 이름은 이유비입니다.\n데이터 엔지니어로 일하고 있습니다.\nemail: eubnara@gmail.com github: https://github.com/eubnara linkedin: https://kr.linkedin.com/in/yubi-lee-40a158130 오픈소스 기여 Hadoop HDFS-17912: HttpFS: hadoop-httpfs.sh ignores HTTPFS_CONFIG when locating httpfs-env.sh HDFS-17883: dfs.net.topology.impl should be respected when dfs.use.dfs.network.topology=true HDFS-17877: DatanodeID.updateRegInfo() does not update hostNameBytes causing stale hostname on client HDFS-17868: introduce BlockPlacementPolicyCrossDC for multi datacenter stretched hdfs cluster HDFS-17655: Cannot run HDFS balancer with BlockPlacementPolicyWithNodeGroup HADOOP-19319: configurationChangeMonitor is not properly set on HttpServer2 HADOOP-18806: Document missing property (ipc.server.read.threadpool.size) in core-default.xml HADOOP-18666: A whitelist of endpoints to skip Kerberos authentication doesn\u0026rsquo;t work for ResourceManager and Job History Server HDFS-16883: fix duplicate field name in hdfs-default.xml HADOOP-18585: DataNode\u0026rsquo;s internal infoserver redirects with http scheme, not https when https enabled. HADOOP-18398: Prevent AvroRecord*.class from being included non-test jar HADOOP-18087: fix bugs when looking up record from upstream DNS servers. When query A record which is chained by CNAME, YARN Registry DNS Server does not properly respond. Some CNAME records are missing. HADOOP-17861: improve YARN Registry DNS Server qps HDFS-13259: fix file preview bug in NameNode UI HDFS-13260: fix guide about HA with QJM Apache HBase HBASE-28911: Automatic SSL keystore reloading for HttpServer HBASE-28816: The description of \u0026ldquo;hbase.superuser\u0026rdquo; is confusing HBASE-28294: Support to skip Kerberos authentication for metric endpoints Apache Phoenix PHOENIX-7635: Update Connectors to use Spark 3.5.6 Apache Hive HIVE-28739: support restricting users to create deferred view Apache Bigtop BIGTOP-3906: Wrapper script for hive sources wrong default file BIGTOP-3850: fix conflict when installing ranger-hdfs-plugin and ranger-yarn-plugin on the same machine Apache Ambari AMBARI-26598: Don\u0026rsquo;t execute dangerous metatool command when starting hiveserver2 AMBARI-26555: Password leaked for configurations at stack root (e.g. cluster-env.xml) AMBARI-26533: Ranger Admin Restart Deletes JDBC JAR When Installed on Same Host as Ambari Server AMBARI-26312: Clean up RequestScheduleEntity and RequestScheduleBatchRequestEntity also AMBARI-26311: postgresql-server should be installed even though ambari-server is configured with mysql AMBARI-26075: Wrong datanode pid file when security enabled and unprivileged port is used AMBARI-25891: Enhancements when regenerating keytabs and changing Kerberos configurations AMBARI-25797: Fail to add a component on the same machine with ambari-server of a new service with no kerberos identity when kerberos enabled AMBARI-25788: Ambari server keeps generating keytabs even with KerberosServerAction#OperationType.CREATE_MISSING option. AMBARI-25624: optimize creating kerberos keytab branch-2.7: https://github.com/apache/ambari/pull/3353 trunk: https://github.com/apache/ambari/pull/3588 AMBARI-25720: Support Apache Directory Server AMBARI-25719: Fix bug when enabling kerberos in Ambari 2.7.6 trunk: https://github.com/apache/ambari/pull/3589 AMBARI-25619: improve \u0026ldquo;Prepare delete identities\u0026rdquo; process when deleting component in host in kerberized cluster AMBARI-25422: optimize loading the first page for Ambari UI AMBARI-25491: newline characters are ignored on custom property in Ambari Web editor Apache Ranger RANGER-5110: Update the FQDN of users and groups whenever it changes RANGER-4887: Change default configuration values for column masking and row-level filtering on hive policy RANGER-4886: do not Html-escape for user, group and role name RANGER-4418: Upgrade hadoop version and use shaded hadoop client artifacts RANGER-4247: auditPolicyEvaluators should be set before logging it RANGER-4236: enhance Ranger JSON audit to HDFS by compressing as gzip RANGER-4068: fix error caused by missing dnsjava library RANGER-3924: fix unnecessary sync caused by incremeting timestamp value typo RANGER-3858: On dev-support, service creation and ranger-kafka-plugin setup are failed Apache Spark SPARK-44976: Utils.getCurrentUserName should return the full principal name SPARK-40964: (TBD) Cannot run spark history server with shaded hadoop jar SPARK-40072: fix build failure when using make-distributions.sh Apache Impala IMPALA-13413: num_cores flag does not work. https://gerrit.cloudera.org/#/c/23333/ IMPALA-13696: Exclude conflicting JAX-RS libraries https://gerrit.cloudera.org/#/c/22394/ IMPALA-9170: close idle connections without an associated session IMPALA-13327: bin/bootstrap_toolchain.py always download hbase-2.6.0-hadoop3-bin.tar.gz when USE_APACHE_COMPONENTS=true IMPALA-13311: Hive3 INSERT failed by ClassNotFoundException: org.apache.tez.runtime.api.Event https://gerrit.cloudera.org/#/c/21706/ IMPALA-13023: support webserver ldap filter when using spnego https://gerrit.cloudera.org/#/c/21339/ IMPALA-10408: Support Apache components to build Apache Impala to reduce dependencies of CDH or CDP https://gerrit.cloudera.org/#/c/18977/ Apache KUDU https://issues.apache.org/jira/browse/KUDU-3549: String gauge exposed in prometheus format Cloudera HUE https://github.com/cloudera/hue/pull/1134 (not merged): fix bug in handling + character in filebrowser https://github.com/cloudera/hue/pull/1135: fix bug in substituting liboozie.remote_deployement_dir variable Apache Zeppelin ZEPPELIN-6396: Separate restart all interpreters into a dedicated endpoint ZEPPELIN-5594: HDFS file id should be read as \u0026ldquo;long\u0026rdquo;, not \u0026ldquo;int\u0026rdquo;. Apache Avro AVRO-3877: [doc] fix wrong configuration for avro-maven-plugin in java example KRB5 https://github.com/krb5/krb5/pull/1467: fix to rename FILE credential cache on windows ETC ansible https://github.com/ansible/ansible/pull/86777: Fix \u0026ndash;start-at-task silently skipping all tasks after the first NewPipe https://github.com/TeamNewPipe/NewPipe/pull/13169: Fix audio ducking issue by using Android\u0026rsquo;s automatic audio focus management Spring-shell https://github.com/spring-projects/spring-shell/pull/432#issuecomment-1144522860: add a feature to terminate spring-shell with CTRL+D gotty-client https://github.com/moul/gotty-client/pull/99: fix disconnection caused by not handling syscall.EINTR fix basic auth. token base64 encoding https://github.com/moul/gotty-client/pull/105 https://github.com/moul/gotty-client/pull/108 https://github.com/moul/gotty-client/pull/110: get password without revealing it react-native-cache https://github.com/timfpark/react-native-cache/pull/25: add a feature to support cache expiration discovery-zookeeper https://github.com/naver/discovery-zookeeper elasticsearch plugin to discovery hosts in cluster based on information in znode of Zookeeper winstonjs https://github.com/winstonjs/winston/pull/1559: fix confusing log message 오픈소스 커뮤니케이션 TeamNewPipe/NewPipe#9710: NewPipe Android audio ducking problem apache/iceberg#10181: How to avoid partition key sorting when inserting data into a partitioned Iceberg table? 번역 The Kerberos Protocol And Its Implementations 발표 TossBank SLASH24: Building a Hadoop cluster with open source https://toss.im/slash-24/sessions/5 https://www.youtube.com/watch?v=4BcSVF4bLtU NAVER DEVIEW 2021: 초대용량 멀티테넌트 시큐어 하둡 클러스터 성장통 경험기 https://deview.kr/2021/sessions/459 https://deview.kr/data/deview/session/attach/10_%EC%B4%88%EB%8C%80%EC%9A%A9%EB%9F%89%20%EB%A9%80%ED%8B%B0%ED%85%8C%EB%84%8C%ED%8A%B8%20%EC%8B%9C%ED%81%90%EC%96%B4%20%ED%95%98%EB%91%A1%20%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%20%EC%84%B1%EC%9E%A5%ED%86%B5%20%EA%B2%BD%ED%97%98%EA%B8%B0.pdf https://tv.naver.com/v/23650574 NAVER DEVIEW 2017: Advanced Experiences in Multi-tenant Hadoop Cluster Operation https://deview.kr/2017/schedule/193?lang=en https://www.slideshare.net/deview/234-80881396 https://tv.naver.com/v/2297124 ","permalink":"https://eubnara.github.io/ko/about/","summary":"\u003cp\u003e제 이름은 이유비입니다.\u003cbr\u003e\n데이터 엔지니어로 일하고 있습니다.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eemail: \u003ca href=\"mailto:eubnara@gmail.com\"\u003eeubnara@gmail.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egithub: \u003ca href=\"https://github.com/eubnara\"\u003ehttps://github.com/eubnara\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003elinkedin: \u003ca href=\"https://kr.linkedin.com/in/yubi-lee-40a158130\"\u003ehttps://kr.linkedin.com/in/yubi-lee-40a158130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 id=\"오픈소스-기여\"\u003e오픈소스 기여\u003c/h1\u003e\n\u003ch2 id=\"hadoop\"\u003eHadoop\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-17912\"\u003eHDFS-17912\u003c/a\u003e: HttpFS: hadoop-httpfs.sh ignores HTTPFS_CONFIG when locating httpfs-env.sh\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-17883\"\u003eHDFS-17883\u003c/a\u003e: dfs.net.topology.impl should be respected when dfs.use.dfs.network.topology=true\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-17877\"\u003eHDFS-17877\u003c/a\u003e: DatanodeID.updateRegInfo() does not update hostNameBytes causing stale hostname on client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-17868\"\u003eHDFS-17868\u003c/a\u003e: introduce BlockPlacementPolicyCrossDC for multi datacenter stretched hdfs cluster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-17655\"\u003eHDFS-17655\u003c/a\u003e: Cannot run HDFS balancer with BlockPlacementPolicyWithNodeGroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-19319\"\u003eHADOOP-19319\u003c/a\u003e: configurationChangeMonitor is not properly set on HttpServer2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-18806\"\u003eHADOOP-18806\u003c/a\u003e: Document missing property (ipc.server.read.threadpool.size) in core-default.xml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-18666\"\u003eHADOOP-18666\u003c/a\u003e: A whitelist of endpoints to skip Kerberos authentication doesn\u0026rsquo;t work for ResourceManager and Job History Server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-16883\"\u003eHDFS-16883\u003c/a\u003e: fix duplicate field name in hdfs-default.xml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-18585\"\u003eHADOOP-18585\u003c/a\u003e: DataNode\u0026rsquo;s internal infoserver redirects with http scheme, not https when https enabled.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-18398\"\u003eHADOOP-18398\u003c/a\u003e: Prevent AvroRecord*.class from being included non-test jar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-18087\"\u003eHADOOP-18087\u003c/a\u003e: fix bugs when looking up record from upstream DNS servers.\n\u003cul\u003e\n\u003cli\u003eWhen query A record which is chained by CNAME, YARN Registry DNS Server does not properly respond. Some CNAME records are missing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HADOOP-17861\"\u003eHADOOP-17861\u003c/a\u003e: improve YARN Registry DNS Server qps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-13259\"\u003eHDFS-13259\u003c/a\u003e: fix file preview bug in NameNode UI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HDFS-13260\"\u003eHDFS-13260\u003c/a\u003e: fix guide about HA with QJM\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-hbase\"\u003eApache HBase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HBASE-28911\"\u003eHBASE-28911\u003c/a\u003e: Automatic SSL keystore reloading for HttpServer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HBASE-28816\"\u003eHBASE-28816\u003c/a\u003e: The description of \u0026ldquo;hbase.superuser\u0026rdquo; is confusing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HBASE-28294\"\u003eHBASE-28294\u003c/a\u003e: Support to skip Kerberos authentication for metric endpoints\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-phoenix\"\u003eApache Phoenix\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/PHOENIX-7635\"\u003ePHOENIX-7635\u003c/a\u003e: Update Connectors to use Spark 3.5.6\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-hive\"\u003eApache Hive\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/HIVE-28739\"\u003eHIVE-28739\u003c/a\u003e: support restricting users to create deferred view\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-bigtop\"\u003eApache Bigtop\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/BIGTOP-3906\"\u003eBIGTOP-3906\u003c/a\u003e: Wrapper script for hive sources wrong default file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/BIGTOP-3850\"\u003eBIGTOP-3850\u003c/a\u003e: fix conflict when installing ranger-hdfs-plugin and ranger-yarn-plugin on the same machine\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-ambari\"\u003eApache Ambari\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26598\"\u003eAMBARI-26598\u003c/a\u003e: Don\u0026rsquo;t execute dangerous metatool command when starting hiveserver2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26555\"\u003eAMBARI-26555\u003c/a\u003e: Password leaked for configurations at stack root (e.g. cluster-env.xml)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26533\"\u003eAMBARI-26533\u003c/a\u003e: Ranger Admin Restart Deletes JDBC JAR When Installed on Same Host as Ambari Server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26312\"\u003eAMBARI-26312\u003c/a\u003e: Clean up RequestScheduleEntity and RequestScheduleBatchRequestEntity also\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26311\"\u003eAMBARI-26311\u003c/a\u003e: postgresql-server should be installed even though ambari-server is configured with mysql\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-26075\"\u003eAMBARI-26075\u003c/a\u003e: Wrong datanode pid file when security enabled and unprivileged port is used\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25891\"\u003eAMBARI-25891\u003c/a\u003e: Enhancements when regenerating keytabs and changing Kerberos configurations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25797\"\u003eAMBARI-25797\u003c/a\u003e: Fail to add a component on the same machine with ambari-server of a new service with no kerberos identity when kerberos enabled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25788\"\u003eAMBARI-25788\u003c/a\u003e: Ambari server keeps generating keytabs even with KerberosServerAction#OperationType.CREATE_MISSING option.\u003c/li\u003e\n\u003cli\u003eAMBARI-25624: optimize creating kerberos keytab\n\u003cul\u003e\n\u003cli\u003ebranch-2.7: \u003ca href=\"https://github.com/apache/ambari/pull/3353\"\u003ehttps://github.com/apache/ambari/pull/3353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrunk: \u003ca href=\"https://github.com/apache/ambari/pull/3588\"\u003ehttps://github.com/apache/ambari/pull/3588\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25720\"\u003eAMBARI-25720\u003c/a\u003e: Support Apache Directory Server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25719\"\u003eAMBARI-25719\u003c/a\u003e: Fix bug when enabling kerberos in Ambari 2.7.6\n\u003cul\u003e\n\u003cli\u003etrunk: \u003ca href=\"https://github.com/apache/ambari/pull/3589\"\u003ehttps://github.com/apache/ambari/pull/3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25619\"\u003eAMBARI-25619\u003c/a\u003e: improve \u0026ldquo;Prepare delete identities\u0026rdquo; process when deleting component in host in kerberized cluster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25422\"\u003eAMBARI-25422\u003c/a\u003e: optimize loading the first page for Ambari UI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AMBARI-25491\"\u003eAMBARI-25491\u003c/a\u003e: newline characters are ignored on custom property in Ambari Web editor\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-ranger\"\u003eApache Ranger\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-5110\"\u003eRANGER-5110\u003c/a\u003e: Update the FQDN of users and groups whenever it changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4887\"\u003eRANGER-4887\u003c/a\u003e: Change default configuration values for column masking and row-level filtering on hive policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4886\"\u003eRANGER-4886\u003c/a\u003e: do not Html-escape for user, group and role name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4418\"\u003eRANGER-4418\u003c/a\u003e: Upgrade hadoop version and use shaded hadoop client artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4247\"\u003eRANGER-4247\u003c/a\u003e: auditPolicyEvaluators should be set before logging it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4236\"\u003eRANGER-4236\u003c/a\u003e: enhance Ranger JSON audit to HDFS by compressing as gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-4068\"\u003eRANGER-4068\u003c/a\u003e: fix error caused by missing dnsjava library\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-3924\"\u003eRANGER-3924\u003c/a\u003e: fix unnecessary sync caused by incremeting timestamp value typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/RANGER-3858\"\u003eRANGER-3858\u003c/a\u003e: On dev-support, service creation and ranger-kafka-plugin setup are failed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-spark\"\u003eApache Spark\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/SPARK-44976\"\u003eSPARK-44976\u003c/a\u003e: Utils.getCurrentUserName should return the full principal name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/SPARK-40964\"\u003eSPARK-40964\u003c/a\u003e: (TBD) Cannot run spark history server with shaded hadoop jar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/SPARK-40072\"\u003eSPARK-40072\u003c/a\u003e: fix build failure when using \u003ccode\u003emake-distributions.sh\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-impala\"\u003eApache Impala\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-13413\"\u003eIMPALA-13413\u003c/a\u003e: num_cores flag does not work.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gerrit.cloudera.org/#/c/23333/\"\u003ehttps://gerrit.cloudera.org/#/c/23333/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-13696\"\u003eIMPALA-13696\u003c/a\u003e: Exclude conflicting JAX-RS libraries\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gerrit.cloudera.org/#/c/22394/\"\u003ehttps://gerrit.cloudera.org/#/c/22394/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-9170\"\u003eIMPALA-9170\u003c/a\u003e: close idle connections without an associated session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-13327\"\u003eIMPALA-13327\u003c/a\u003e: bin/bootstrap_toolchain.py always download hbase-2.6.0-hadoop3-bin.tar.gz when USE_APACHE_COMPONENTS=true\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-13311\"\u003eIMPALA-13311\u003c/a\u003e: Hive3 INSERT failed by ClassNotFoundException: org.apache.tez.runtime.api.Event\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gerrit.cloudera.org/#/c/21706/\"\u003ehttps://gerrit.cloudera.org/#/c/21706/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-13023\"\u003eIMPALA-13023\u003c/a\u003e: support webserver ldap filter when using spnego\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gerrit.cloudera.org/#/c/21339/\"\u003ehttps://gerrit.cloudera.org/#/c/21339/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/IMPALA-10408\"\u003eIMPALA-10408\u003c/a\u003e: Support Apache components to build Apache Impala to reduce dependencies of CDH or CDP\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://gerrit.cloudera.org/#/c/18977/\"\u003ehttps://gerrit.cloudera.org/#/c/18977/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-kudu\"\u003eApache KUDU\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/KUDU-3549\"\u003ehttps://issues.apache.org/jira/browse/KUDU-3549\u003c/a\u003e: String gauge exposed in prometheus format\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"cloudera-hue\"\u003eCloudera HUE\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cloudera/hue/pull/1134\"\u003ehttps://github.com/cloudera/hue/pull/1134\u003c/a\u003e (not merged): fix bug in handling \u003ccode\u003e+\u003c/code\u003e character in filebrowser\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cloudera/hue/pull/1135\"\u003ehttps://github.com/cloudera/hue/pull/1135\u003c/a\u003e: fix bug in substituting \u003ccode\u003eliboozie.remote_deployement_dir\u003c/code\u003e variable\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-zeppelin\"\u003eApache Zeppelin\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/ZEPPELIN-6396\"\u003eZEPPELIN-6396\u003c/a\u003e: Separate restart all interpreters into a dedicated endpoint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/ZEPPELIN-5594\"\u003eZEPPELIN-5594\u003c/a\u003e: HDFS file id should be read as \u0026ldquo;long\u0026rdquo;, not \u0026ldquo;int\u0026rdquo;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"apache-avro\"\u003eApache Avro\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issues.apache.org/jira/browse/AVRO-3877\"\u003eAVRO-3877\u003c/a\u003e: [doc] fix wrong configuration for avro-maven-plugin in java example\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"krb5\"\u003eKRB5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/krb5/krb5/pull/1467\"\u003ehttps://github.com/krb5/krb5/pull/1467\u003c/a\u003e: fix to rename FILE credential cache on windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"etc\"\u003eETC\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eansible\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible/pull/86777\"\u003ehttps://github.com/ansible/ansible/pull/86777\u003c/a\u003e: Fix \u0026ndash;start-at-task silently skipping all tasks after the first\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNewPipe\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TeamNewPipe/NewPipe/pull/13169\"\u003ehttps://github.com/TeamNewPipe/NewPipe/pull/13169\u003c/a\u003e: Fix audio ducking issue by using Android\u0026rsquo;s automatic audio focus management\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSpring-shell\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spring-projects/spring-shell/pull/432#issuecomment-1144522860\"\u003ehttps://github.com/spring-projects/spring-shell/pull/432#issuecomment-1144522860\u003c/a\u003e: add a feature to terminate spring-shell with \u003ccode\u003eCTRL+D\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003egotty-client\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moul/gotty-client/pull/99\"\u003ehttps://github.com/moul/gotty-client/pull/99\u003c/a\u003e: fix disconnection caused by not handling \u003ccode\u003esyscall.EINTR\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003efix basic auth. token base64 encoding\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moul/gotty-client/pull/105\"\u003ehttps://github.com/moul/gotty-client/pull/105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moul/gotty-client/pull/108\"\u003ehttps://github.com/moul/gotty-client/pull/108\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moul/gotty-client/pull/110\"\u003ehttps://github.com/moul/gotty-client/pull/110\u003c/a\u003e: get password without revealing it\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ereact-native-cache\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/timfpark/react-native-cache/pull/25\"\u003ehttps://github.com/timfpark/react-native-cache/pull/25\u003c/a\u003e: add a feature to support cache expiration\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ediscovery-zookeeper\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/naver/discovery-zookeeper\"\u003ehttps://github.com/naver/discovery-zookeeper\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eelasticsearch plugin to discovery hosts in cluster based on information in znode of Zookeeper\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ewinstonjs\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/winstonjs/winston/pull/1559\"\u003ehttps://github.com/winstonjs/winston/pull/1559\u003c/a\u003e: fix confusing log message\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 id=\"오픈소스-커뮤니케이션\"\u003e오픈소스 커뮤니케이션\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TeamNewPipe/NewPipe/issues/9710#issuecomment-3764631972\"\u003eTeamNewPipe/NewPipe#9710\u003c/a\u003e: NewPipe Android audio ducking problem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/iceberg/issues/10181#issuecomment-3568634698\"\u003eapache/iceberg#10181\u003c/a\u003e: How to avoid partition key sorting when inserting data into a partitioned Iceberg table?\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 id=\"번역\"\u003e번역\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://rtd-hadoop-security.readthedocs.io/ko/latest/kerberos.html\"\u003eThe Kerberos Protocol And Its Implementations\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 id=\"발표\"\u003e발표\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTossBank SLASH24: Building a Hadoop cluster with open source\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://toss.im/slash-24/sessions/5\"\u003ehttps://toss.im/slash-24/sessions/5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/watch?v=4BcSVF4bLtU\"\u003ehttps://www.youtube.com/watch?v=4BcSVF4bLtU\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNAVER DEVIEW 2021: 초대용량 멀티테넌트 시큐어 하둡 클러스터 성장통 경험기\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://deview.kr/2021/sessions/459\"\u003ehttps://deview.kr/2021/sessions/459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://deview.kr/data/deview/session/attach/10_%EC%B4%88%EB%8C%80%EC%9A%A9%EB%9F%89%20%EB%A9%80%ED%8B%B0%ED%85%8C%EB%84%8C%ED%8A%B8%20%EC%8B%9C%ED%81%90%EC%96%B4%20%ED%95%98%EB%91%A1%20%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%20%EC%84%B1%EC%9E%A5%ED%86%B5%20%EA%B2%BD%ED%97%98%EA%B8%B0.pdf\"\u003ehttps://deview.kr/data/deview/session/attach/10_%EC%B4%88%EB%8C%80%EC%9A%A9%EB%9F%89%20%EB%A9%80%ED%8B%B0%ED%85%8C%EB%84%8C%ED%8A%B8%20%EC%8B%9C%ED%81%90%EC%96%B4%20%ED%95%98%EB%91%A1%20%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%20%EC%84%B1%EC%9E%A5%ED%86%B5%20%EA%B2%BD%ED%97%98%EA%B8%B0.pdf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://tv.naver.com/v/23650574\"\u003ehttps://tv.naver.com/v/23650574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNAVER DEVIEW 2017: Advanced Experiences in Multi-tenant Hadoop Cluster Operation\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://deview.kr/2017/schedule/193?lang=en\"\u003ehttps://deview.kr/2017/schedule/193?lang=en\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.slideshare.net/deview/234-80881396\"\u003ehttps://www.slideshare.net/deview/234-80881396\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://tv.naver.com/v/2297124\"\u003ehttps://tv.naver.com/v/2297124\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e","title":"소개"}]