메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


추가되는 노드가 다음과 같을때 EdgeNode로 등록하는 방법및 절차를 정리한다. 

- CM : goopmngp01, 222.23.444.47

 

- 추가되는 노드(예, Dataiku플랫폼)

ddfpslip1, 222.23.444.79

ddfpslip2, 222.23.444.80

ddfpslip3, 222.23.444.81

ddfpslip4, 222.23.444.82

 

1. 사전 신청/확보 필요한 작업

  - 공용계정(hadoop) 사용신청

  - 접근통제 예외 처리(22번 포트)(goopmngp01->ddfpslip1, ddfpslip2, ddfpslip3, ddfpslip4)

     : 확인방법 -> [hadoop@goopmngp01:~]$sudo -u hadoop ssh 222.23.444.78 를 수행해서 정상적으로 로그인 되는지 확인한다.

  - 특권계정(root) 사용 신청

  - root 패스워드 확인 신청

  - scp대상 서버의 os account(hadoop)) 패스워드 확인(필요시)

  - root/hadoop 계정에 대한 금지명령어 예외 신청(sudo(금지어), ssh(금지어), scp(금지어 아님))

  - OS package 추가 설치를 위한 Local Repository설정 요청(/etc/yum.repos.d)

  - client node의 FQDN을 DNS에 양방향으로 설정및 다음과 같이 확인할것.

         - nslookup ddfpslip1.gooper.com

         - nslookup 222.23.444.79

  - Dataiku 서비스 계정(예, dataiku)를 AD에 등록하고 keytab을 발급해서 client 팀에 전달

  

2. 필요시 Python 2.7.17 버전 설치(Cloudera Agnet설치시 자동 설치됨) (CDP7.1.9SP1이상은 Python 3.6.x이상만 지원함)

  - python설치는 optional이며 cloudera agent설치 과정에서 자체적으로 사용하는 위치(/opt/cloudera/cm-agent/lib/python2.7)에 설치됨

  - python2.7.x의 default charset이 ascii이므로 utf8로 변경할 필요가 있음 (python3.6.x는 default가 utf8임)

  - global적용을 위해서 다음 파일에 charset을 다음과 같이 utf8로 지정 :   vi /opt/cloudera/cm-agent/lib/python2.7/site.py 파일에서 

                #encoding = "ascii" # Default value set by _PyUnicode_Init()을 주석 처리하고 

                encoding = "utf8" # Default value set by _PyUnicode_Init()와 같이 변경함.

        * 참고 #1 

           Cloudera Agent 설치 과정에서 python 2.7.x가 설치된 경우는 global charset를 변경우 systemctl restart cloudera-scm-agent를 수행하여 변경사항을 반영해줄것.. 

        *참고 #2

                1. repo에 ""python2.x86_64    2.7.18-17.module+el8.10.0+20822+a15ec22d iso_AppStream"" 이 있음.

                  -> yum install python2 를 설치하면 /usr/ 밑에 설치됨

                2. Dataiku용으로 이미 python36-3.6.8 가 설치되어있음."

3. 필요한 package추가 설치및 conf설정(커버로스등과 관련된 필요 패키지 확인 및 설치) (yum list installed | grep krb5-workstation 로 확인) - 추가된 노드에 반복 수행

          1 필요한 Library 모두 설치

                yum install -y sssd realmd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation openldap-clients nscd krb5-libs samba-common-tools samba-common bind-utils

                

        - yum install krb5-workstation

        - yum install krb5-devel

        - yum install krb5-libs

        - yum install chronyd

        - 기타 필요 패키지 일체 (bind-utils)

        - /etc/chronyd.conf

        2. /etc/chrony.conf 를 확인해서 없으면 등록해 줄 것

                leapsecmode slew

                server 142.12.160.101

                server 142.12.160.102

                server 142.8.2168.101

                server 142.82.168.102

        3. /etc/resolv.conf 를 확인해서 없으면 등록해 줄 것

          (해당 파일이 없는 경우가 있는데 그때는 새로 만들어주고 반드시 파일의 권한을 확인해서 

              other에 read권한이 포함되게 해줄것.. 그렇지 않으면 DNS찾지 못하는 상황이 발생함)

                nameserver 422.11.104.58

                nameserver 422.11.104.59

                nameserver 422.11.52.14

                nameserver 422.11.54.14

                options timeout:1 attempts:3

        4. /etc/hosts에 다음을 추가해준다

                222.23.444.79 ddfpslip1.gooper.com ddfpslip1

                222.23.444.80 ddfpslip2.gooper.com ddfpslip2

                222.23.444.81 ddfpslip3.gooper.com ddfpslip3

                222.23.444.82 ddfpslip4.gooper.com ddfpslip4

                #### Cloudera Cluster ####

                222.23.444.47 goopmngp01.bdp.gooper.com goopmngp01

                222.23.444.48 goopidcp01.bdp.gooper.com goopidcp01

                222.23.444.49 goopidcp02.bdp.gooper.com goopidcp02

                ### AD ###

                222.23.444.58 sbdvadwp01.bdp.gooper.com sbdvadwp01

                222.23.444.59 sbdvadwp02.bdp.gooper.com sbdvadwp02

                

        5. /etc/krb5.conf 수정

                [hadoop@goopdatp10:~]$cat /etc/krb5.conf

                # Configuration snippets may be placed in this directory as well

                includedir /etc/krb5.conf.d/

                [logging]

                        default = FILE:/var/log/krb5libs.log

                        kdc = FILE:/var/log/krb5kdc.log

                        admin_server = FILE:/var/log/kadmind.log

                [libdefaults]

                        default_realm = BDP.GOOPER.COM

                        dns_lookup_realm = false

                        dns_lookup_kdc = false

                        ticket_lifetime = 24h

                        renew_lifetime = 7d

                        forwardable = true

                        rdns = false

                        udp_preference_limit = 1

                        default_ccache_name = FILE:/tmp/krb5cc_%{uid}

                [realms]

                        GOOPER.COM = {

                                kdc = bdakdcp01.gooper.com

                                admin_server = bdakdcp01.gooper.com

                        }

                        BDP.GOOPER.COM = {

                                kdc = sbdvadwp01.bdp.gooper.com

                                kdc = sbdvadwp02.bdp.gooper.com

                                admin_server = sbdvadwp01.bdp.gooper.com

                        }

                        BDR.GOOPER.COM = {

                                kdc = sbdvadwd01.bdr.gooper.com

                                admin_server = sbdvadwd01.bdr.gooper.com

                        }

                [domain_realm]

                        .gooper.com = GOOPER.COM

                        gooper.com = GOOPER.COM

                        .bdp.gooper.com = BDP.GOOPER.COM

                        bdp.gooper.com = BDP.GOOPER.COM

                        .bdr.gooper.com = BDR.GOOPER.COM

                        bdr.gooper.com = BDR.GOOPER.COM                

        6. ticket cache방식을 KCM에서 FILE로 변경 

        [root@ddfpslip1:/etc/yum.repos.d]#vi /etc/krb5.conf.d/kcm_default_ccache 의 다음 내용중 default_ccache_name = KCM: 을 주석처리함

        [libdefaults]

        #    default_ccache_name = KCM:

        7. 인증서및 truststore 등록 

           1. 준비 (goopmnap01에 있는 trustore와 ca.pem파일을 임시 폴더에 저장한다. 

             [hadoop@goopmngp01:/root]$cp /opt/cloudera/security/certs/truststore /tmp/truststore

             [hadoop@goopmngp01:/root]$sudo cp  /opt/cloudera/security/certs/ca.pem /tmp/ca.pem

           2. goopmngp01에서 download하여 추가할 노드의 특정위치(예, /home/hadoop)에 upload한다 

           3. 다음과 같은 방법으로 추가할 노드애 반영시켜준다. 

               가. 신뢰하는 인증서 등록(CM 서버 ↔ CM 에이전트 간 연동 목적의 인증서 업데이트 (CM노드의 인증서를 복사) )

                        [root@ddfpslip1:/etc/yum.repos.d]#cp /home/hadoop/ca.pem /usr/share/pki/ca-trust-source/anchors/ca.pem

                        [root@ddfpslip1:/etc/yum.repos.d]#update-ca-trust

                          

           나. CM에 있는 truststore를 신규 노드의 해당 위치에 복사해주고 권한을 맞춰준다. 

                        [root@ddfpslip1:/etc/yum.repos.d]#mkdir /opt/cloudera/security

                        [root@ddfpslip1:/etc/yum.repos.d]#mkdir /opt/cloudera/security/certs

                        [root@ddfpslip1:/etc/yum.repos.d]#cp /home/hadoop/truststore /opt/cloudera/security/certs/truststore

                        [root@ddfpslip1:/opt/cloudera]#chmod o+x /opt/cloudera/security/

                        [root@ddfpslip1:/opt/cloudera]#chmod o+x /opt/cloudera/security/certs

                        [root@ddfpslip1:/opt/cloudera]#chmod o+r /opt/cloudera/security/certs/truststore

                        

        8. 추가할 노드에 다음을 참고하여 cloudera-manager.repo를 구성해둔다. 

           [root@ddfvslit1:/etc/yum.repos.d]$vi cloudera-manager.repo

                        [cloudera-manager]

                        name=CM7.6.1

                        baseurl=http://goopmngp01.bdp.gooper.com/cm7.6.1

                        enabled=1

                        gpgcheck=0

                        

4. Add Hosts to an Existing Cluster & Add New Hosts to Cloudera Manager & Gateway roles 추가

    1. sudo systemctl start httpd로 http서비스를 기동해준다.  (/var/www/html에 필요한 rpm등의 필요한 파일은 이미 존재한다고 가정)

        2. CM console TLS(Use TLS Encryption for Admin Console)설정 disable 상태로 변경/ CM만 restart후 아래 작업을 진행하고 enable로 원복 후 CM만 restart해준다. 

           (Cloudera Management Service도 CM에서 restart필요함)

    3. Add Hosts to an Existing Cluster

          - cloudera agent : http://222.23.444.47/cm7.6.1     :  CM에서 Agent설치에 필요한 Repository요청시 http://222.23.444.47/cm7.6.1을 입력해준다. 

          - CDP : http://222.23.444.47/cdp7.1.7.sp1               : CM -> Parcel Repositry & Network Settings의 Remote Parcel Repository URLs 부분에 미리 입력해둘것.

          - CM에서 해당 host선택하고 Regenerate keytab를 클릭(확실하지 않음)

                (미수행시 오류내용 : 

                         Certificate ExpirationSuppress...

                        Test is disabled because no metrics are being reported. Likely certificates are not in use. Test alert on Cloudera Manager Agent certificate close to expiry.

                )

          - Restart CMS수행 필요함

          - Inspect Hosts in Cluster로 확인

        4. Add New Hosts to Cloudera Manager

        5. Cloudera Agent 설치후 python의 charset을 utf8로 변경해준다. (python 2.7.x는 default charset이 ascii이고 python 3.8.x이상은 utf8임)

          - global적용을 위해서 다음 파일에 charset을 다음과 같이 utf8로 지정 :   vi /opt/cloudera/cm-agent/lib/python2.7/site.py 파일에서 

                        #encoding = ""ascii"" # Default value set by _PyUnicode_Init()을 주석 처리하고 

                        encoding = ""utf8"" # Default value set by _PyUnicode_Init()와 같이 변경함.

        6. Gateway roles 추가

         - HDFS Gateway

         - Hive Gateway

         - Hive on Tez Gateway

         - Spark Gateway

         - SQOOP_CLIENT Gateway

         - YARN Gateway

         7. Client Node에서 Cloudera Agent Restart해줄것(변경사항 발생시)

         

5. SSSD 연동(root로 수행)

  - sssd.conf는 "realm join" 명령으로 자동 생성됨 (수동설정시 /etc/krb5.keytab에 600 root:root로 권한 부여해야 sssd기동 할 때 정상적으로 오류없이 정상 기동 됨.)

  - sssd연동을 위한  설정 (모든 노드)

        1 필요한 Library 모두 설치 (필요시)

                yum install -y sssd realmd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation openldap-clients nscd krb5-libs samba-common-tools samba-common bind-utils

        2        /etc/nscd.conf 수정

                enable-cache passwd no

                enable-cache group no

                enable-cache netgroup no

        

        3        nscd 실행

                sudo systemctl start nscd && systemctl enable nscd

        

        4        realm join (client node에서 수행할 것)

                sudo realm join --computer-name=`hostname -s` -U sysadm sbdvadwp01.bdp.gooper.com

        5        /etc/sssd/sssd.conf를 아래와 같이 수정 후 sudo systemctl restart sssd 수행후 id hadoop을 수행하여 group이 정상적으로 조회되는지 확인할것..

                #use_fully_qualified_names = True

                use_fully_qualified_names = False

                #fallback_homedir = /home/%u@%d

                fallback_homedir = /home/%u

        

                *참고 (아래 파일(/etc/sssd/sssd.conf)은 realm join을 통해서 자동 생성됨)

                        [hadoop@goopdatt01:~]$sudo cat /etc/sssd/sssd.conf

                        [sssd]

                        domains = bdt.gooper.com

                        config_file_version = 2

                        services = nss, pam

                        [domain/bdt.gooper.com]

                        ad_server = sbdvadwt01.bdt.gooper.com

                        ad_domain = bdt.gooper.com

                        krb5_realm = BDT.GOOPER.COM

                        realmd_tags = manages-system joined-with-adcli

                        cache_credentials = True

                        id_provider = ad

                        krb5_store_password_if_offline = True

                        default_shell = /bin/bash

                        ldap_sasl_authid = ddfpslip1$

                        ldap_id_mapping = True

                        use_fully_qualified_names = False

                        fallback_homedir = /home/%u

                        access_provider = ad

                        #ldap_id_use_start_tls = false

                        #ad_user_ldaps=false

                        debug_level = 5

        

        6        sssd 재실행및 enable설정

                systemctl restart sssd && systemctl enable sssd

        

        7 sssd관련 서비스 기동및 enable (KCM을 쓰는 경우, 필요시)

                sudo systemctl start sssd-kcm.socket

                sudo systemctl enable sssd-kcm.socket                

                

6. Hue에서 dataiku계정 연동및 home directory생성

  (User Admin -> Users -> Add/Sync LDAP user에서 username: dataiku, 

      Create home directory를 check하고 하단의 "Add/Sync user"버튼 클릭)

                

7. 빅데이터 Impala JDBC 연동 확인(by Dataiku)

  - Dataiku쪽에서 데이터 조회 테스트
 

번호 제목 날짜 조회 수
» 운영계 하둡클러스터에 노드 4대를 EdgeNode로 추가하는 방법/절차 2025.01.12 8
745 Oracle 10g 혹은 12c 를 19c로 Upgrade시 Cloudera Cluster작업에 필요한 작업 2025.01.12 6
744 beeline을 이용한 impala JDBC 테스트 방법(Kerberos 설정된 상태임) 2024.11.29 284
743 외부에서 ImpalaJDBC42.jar를 통해서 Impala에 접속시 sessions정보 2024.11.26 320
742 [Kerberos]Kerberos authentication cache를 FILE로 지정해도 KCM으로 저장되는 경우 조치방법 2024.11.03 400
741 How to Install Magento 2.4.7 on Ubuntu 24.04 2024.09.04 1714
740 [CDP7.1.7]Hive Replication수행시 Target Cluster에서 Specified catalog.database.table does not exist 오류 2024.05.08 1880
739 [Impala] alter table구문수행시 "WARNINGS: Impala does not have READ_WRITE access to path 'hdfs://nameservice1/DATA/Temp/DB/source/table01_ccd'" 발생시 조치 2024.04.26 466
738 [CDP7.1.7] oozie sqoop action으로 import혹은 export수행시 발생한 오류에 대한 자세한 로그 확인 하는 방법 2024.04.19 487
737 [CDP7.1.7]Hive Replication수행중 Specified catalog.database.table does not exist : hive.db명.table명 오류 발생시 조치방법 2024.04.05 1755
736 [Active Directory] AD Kerberos보안 설정 변경 방법 (Maximum lifetime for user ticket, Maximum lifetime for user ticket renewal) 2024.03.12 1612
735 [CDP7.1.7]BDR작업후 오류로 Diagnostic Data를 수집하는 동안 "No content to map due to end-of-input at [Source: (String)""; line: 1, column: 0]" 오류 발생시 조치 2024.02.20 2306
734 [CDP7.1.7, Replication]Encryption Zone내 HDFS파일을 비Encryption Zone으로 HDFS Replication시 User hdfs가 아닌 hadoop으로 수행하는 방법 2024.01.15 421
733 [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우 2024.01.05 2089
732 [CDP7.1.7][Replication]Table does not match version in getMetastore(). Table view original text mismatch 2024.01.02 1644
731 [CDP7.1.7, Hive Replication]Hive Replication진행중 "The following columns have types incompatible with the existing columns in their respective positions " 오류 2023.12.27 1682
730 [CDP7.1.7]impala-shell을 이용하여 kudu table에 insert/update수행시 발생하는 오류(Transport endpoint is not connected (error 107)) 발생시 확인할 내용 2023.11.30 2533
729 [CDP7.1.7]impala-shell수행시 간헐적으로 "-k requires a valid kerberos ticket but no valid kerberos ticket found." 오류 2023.11.16 2053
728 [CDP7.1.7]Encryption Zone내부/외부 간 데이터 이동(mv,cp)및 CTAS, INSERT SQL시 오류(can't be moved into an encryption zone, can't be moved from an encryption zone) 2023.11.14 2087
727 kudu table와 impala(hive) table정보가 틀어져서 테이블을 읽지 못하는 경우(Error Loading Metadata) 조치방법 2023.11.10 1833
위로