ranger와 HDFS 플러그인을 연동 중, 

enable-hdfs-plugin.sh 실행 후 hdfs namenode를 재기동하였을 때,

에러와 함께 namenode가 기동되지않는 현상이었습니다.

전체 로그

java.lang.NoClassDefFoundError: org/codehaus/jackson/jaxrs/JacksonJsonProvider
        at org.apache.ranger.plugin.util.RangerRESTClient.buildClient(RangerRESTClient.java:226)
        at org.apache.ranger.plugin.util.RangerRESTClient.getClient(RangerRESTClient.java:193)
        at org.apache.ranger.plugin.util.RangerRESTClient.get(RangerRESTClient.java:473)
        at org.apache.ranger.admin.client.RangerAdminRESTClient.getRangerRolesDownloadResponse(RangerAdminRESTClient.java:1340)
        at org.apache.ranger.admin.client.RangerAdminRESTClient.getRolesIfUpdatedWithCred(RangerAdminRESTClient.java:1202)
        at org.apache.ranger.admin.client.RangerAdminRESTClient.getRolesIfUpdated(RangerAdminRESTClient.java:167)
        at org.apache.ranger.plugin.util.RangerRolesProvider.loadUserGroupRolesFromAdmin(RangerRolesProvider.java:183)
        at org.apache.ranger.plugin.util.RangerRolesProvider.loadUserGroupRoles(RangerRolesProvider.java:123)
        at org.apache.ranger.plugin.util.PolicyRefresher.loadRoles(PolicyRefresher.java:495)
        at org.apache.ranger.plugin.util.PolicyRefresher.startRefresher(PolicyRefresher.java:144)
        at org.apache.ranger.plugin.service.RangerBasePlugin.init(RangerBasePlugin.java:245)
        at org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer.start(RangerHdfsAuthorizer.java:113)
        at org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer.start(RangerHdfsAuthorizer.java:86)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startCommonServices(FSNamesystem.java:1321)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.startCommonServices(NameNode.java:877)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:798)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1027)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1002)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1776)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1841)
Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.jaxrs.JacksonJsonProvider
        at java.lang.ClassLoader.findClass(ClassLoader.java:530)
        at org.apache.ranger.plugin.classloader.RangerPluginClassLoader$MyClassLoader.findClass(RangerPluginClassLoader.java:316)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.apache.ranger.plugin.classloader.RangerPluginClassLoader.loadClass(RangerPluginClassLoader.java:160)
        ... 20 more

 

 

저의 환경은 ranger 2.4.0, hadoop 3.3.5버전이었습니다.

hadoop 3.3.5버전 부터 jackson 종속성이 업그레이드되었고, jackson-jaxrs jar를 포함한 모든 jackson 1.x 패키지를 제거했다고 나와있습니다. 이에 플러그인 활성화 후  jackson 1.x를 로드할 수 없기 때문에 hadoop namenode가 기동되지 않았습니다.

ranger 2.4.0버전을 사용하기위해 수동으로 github의 소스를 받아 tags/release-ranger-2.4.0 태그로 빌드를 하였습니다.

위 문제에 대한 커밋은 아직 해당 태그에는 반영되어있지않아. 2개의 파일을 수동으로 수정 후 재빌드하여 해당 문제를 해결하였습니다.

vi {RANGER_SOURCE_HOME}/distro/src/main/assembly/hdfs-agent.xml
     84         <fileMode>644</fileMode>
     85         <includes>
     86           <include>commons-lang:commons-lang</include>
                  <!-- 해당 줄을 추가해줍니다. -->
     87           <include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
     88           <include>org.eclipse.jetty:jetty-client:jar:${jetty-client.version}</include>
     89           <include>org.apache.httpcomponents:httpmime:jar:${httpcomponents.httpmime.version}</include>
     90           <include>org.apache.httpcomponents:httpclient:jar:${httpcomponents.httpclient.version}</include>
     91           <include>org.apache.httpcomponents:httpcore:jar:${httpcomponents.httpcore.version}</include>


vi ./distro/src/main/assembly/plugin-yarn.xml
     54         <fileMode>644</fileMode>
     55         <includes>
     56           <include>commons-lang:commons-lang:jar:${commons.lang.version}</include>
                  <!-- 해당 줄을 추가해줍니다. --> 
     57           <include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
     58           <include>org.eclipse.jetty:jetty-client:jar:${jetty-client.version}</include>
     59           <include>org.apache.httpcomponents:httpmime:jar:${httpcomponents.httpmime.version}</include>
     60           <include>org.apache.httpcomponents:httpclient:jar:${httpcomponents.httpclient.version}</include>
     61           <include>org.apache.httpcomponents:httpcore:jar:${httpcomponents.httpcore.version}</include>
     62           <include>org.noggit:noggit:jar:${noggit.version}</include>

 

 

해당 문제에 대한 자료:

https://issues.apache.org/jira/browse/RANGER-4327

 

[RANGER-4327] Make ranger2.4 hdfs plugin compatible with hadoop 3.3.5 + - ASF JIRA

hadoop 3.3.5 has upgraded its jackson dependency and removed all jackson 1.x packages, including the jackson-jaxrs jar. As a result, when starting with the Ranger plugin enabled, Hadoop namenode fails to start due to the inability to load jackson 1.x. To a

issues.apache.org

 

ranger 빌드:

https://developer-woong.tistory.com/95

 

ranger) Apache Ranger 2.4.0 빌드

centos7 기준입니다. 호스트명이 mast02인 서버에서 진행하였습니다. ranger 설치 전 환경에 맞게 우선 빌드해보도록 하겠습니다. jdk8, maven 3.8.8, python 3.6.8 이 설치되어있음을 가정합니다. maven 3.6.3버

developer-woong.tistory.com

 

감사합니다.

반응형

centos7 기준입니다.

HDFS와 ranger가 설치되어있음을 가정합니다.

 

ranger 설치

https://developer-woong.tistory.com/96

 

ranger) ranger 2.4.0 admin 설치

centos7 기준입니다. ranger-admin 2.4.0 버전을 설치해보도록 하겠습니다. 사전에 postgreSQL, solr, jdk8이 설치되어있고, ranger 소스 빌드가 완료된 것을 가정합니다. 저의 환경에서는 mast02서버에 postgreSQL, m

developer-woong.tistory.com

 

HDFS 설치

https://developer-woong.tistory.com/36

 

hadoop 설치 (정리모음버전)

centos7 기준입니다. 6대의 서버가 준비되어있고, ntp설정, ip설정 및 호스트네임 등록, jdk 설정, zookeeper 설치가 완료됨을 가정합니다. https://developer-woong.tistory.com/37 centos linux ntp enable centos7 기준입니

developer-woong.tistory.com

 

ranger-hdfs plugin은 HDFS namenode들에 설치되며,

저의 환경에서는 mast01,mast02서버가 namenode이고, mast02서버가 ranger admin 서버입니다.

 

1. ranger-2.4.0-hdfs-plugin.tar.gz 압축 해제

action server: mast01,mast02

user: root

pwd: -

cmd:

# ranger 빌드 시 해당 파일이 생성됩니다.
cp /opt/apps/ranger/target/ranger-2.4.0-hdfs-plugin.tar.gz /opt/apps

# 압축 해제 및 권한 설정
cd /opt/apps/
tar xvfz ranger-2.4.0-hdfs-plugin.tar.gz
chown -R hadoop:hadoop /opt/apps/ranger-2.4.0-hdfs-plugin

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/ranger-2.4.0-hdfs-plugin

 

2. enable, disable 스크립트 수정

* root가 아닌 hadoop 계정으로 설치하고, policy cache, conf등의 경로를 직접 설정하는 과정입니다.

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

# hdfs-plugin을 root 계정이 아닌 hadoop 계정으로 설치하기위해 아래와 같이 수정합니다.
vi enable-hdfs-plugin.sh

if [ ! -w /etc/passwd ]
then
    echo "ERROR: $0 script should be run as root."
    # exit 1 <-- 해당 부분 주석 처리
fi

# vi 화면에서 esc를 누른 후 해당 명령을 실행하고 y로 문자열을 변경해줍니다.
:%s?/etc/${PROJ_NAME}?/opt/apps/ranger-2.4.0-hdfs-plugin/etc/${PROJ_NAME}?c

# disable-hdfs-plugin.sh 역시 위와 같은 과정으로 수정합니다.

 

 

3. install.properties 수정

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

vi install.properties

POLICY_MGR_URL=http://mast02:6080
REPOSITORY_NAME=hadoop-policy
COMPONENT_INSTALL_DIR_NAME=/opt/apps/hadoop-3.3.5

# AUDIT configuration with V3 properties
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://mast01:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=mast01:2181,mast02:2181,mast03:2181/solr-cloud
XAAUDIT.SOLR.FILE_SPOOL_DIR=/opt/apps/ranger-2.4.0-hdfs-plugin/spool

# End of V2 properties   

SSL_KEYSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hdfs-plugin/conf/ranger-plugin-keystore.jks
SSL_TRUSTSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hdfs-plugin/conf/ranger-plugin-truststore.jks

CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop

# 경로 생성
mkdir conf

 

4. 플러그인 활성화

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

./enable-hdfs-plugin.sh

 

5. ranger service 생성

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

 

Service Name *: hadoop-policy
Display Name  : hadoop-policy
Username : hadoop
Password : hadoop (linux 계정 비밀번호)
Namenode URL : hdfs://mast01:8020/,hdfs://mast02:8020/
Add New Configurations
- tag.download.auth.users : hadoop
- policy.download.auth.users : hadoop
- policy.grantrevoke.auth.users : hadoop

 

 

6. namenode 재시작

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

/opt/apps/hadoop-3.3.5/bin/hdfs --daemon stop namenode
/opt/apps/hadoop-3.3.5/bin/hdfs --daemon start namenode

 

mast02:6080 (ranger UI) 내 Audit -> Plugin Status에 플러그인이 연동되었는지 확인합니다.

 

7. policy 생성

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

ranger UI 메인 화면 -> 생성한 hadoop-policy 클릭 -> 우측 상단 Add New Policy 클릭하여 생성 화면으로 진입합니다.

 

1. 정책 이름을 설정합니다.

2. 기존 정책들을 Override할 것인지 체크합니다.

3. 접근을 제어할 HDFS 경로입니다. * 표시는 전체 경로에 대해 접근을 제어하겠다는 의미입니다.

4. 접근 가능한 user입니다.

5. 해당 Role, Group, User가 어떤 엑세스에 접근할 수 있는 지 설정합니다.

6. 위 Allow Conditions, 즉, 허용된 Role, Group, User를 제외한 모든 엑세스를 거부한다는 뜻입니다.

7. 해당 사항을 저장합니다.

 

8. policy 다운로드 확인

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

mast02:6080 (ranger UI) 내 Audit -> Plugin Status에 플러그인이 변경 혹은 생성된 정책을 다운로드 받았는지 알 수 있습니다. 변경 직후, 느낌표가 뜨게 되며, 느낌표가 사라지면, 다운로드가 완료되었다는 뜻입니다.

 

9. 접근제어 적용확인

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

# hadoop 유저이므로 통과됩니다.
hdfs dfs -ls /

# hadoop 유저 이외에 모든 엑세스를 거부하였으므로 통과되지않습니다.
su - admin
hdfs dfs -ls /

 

 

 

만약 admin이라는 유저도 HDFS에 접근 가능하게끔하려면, 7. policy 생성 내

USER에 admin을 추가합니다.

 

추가로 Hive, Yarn 등의 플러그인들도 포스팅해보도록 하겠습니다.

감사합니다.

반응형

ranger 설치 링크 모음입니다.

 

ranger 빌드

https://developer-woong.tistory.com/95

 

ranger) Apache Ranger 2.4.0 빌드

centos7 기준입니다. 호스트명이 mast02인 서버에서 진행하였습니다. ranger 설치 전 환경에 맞게 우선 빌드해보도록 하겠습니다. jdk8, maven 3.8.8, python 3.6.8이 설치되어있음을 가정합니다. maven 3.6.3버전

developer-woong.tistory.com

 

ranger admin

https://developer-woong.tistory.com/96

 

ranger) ranger 2.4.0 admin 설치

centos7 기준입니다. ranger-admin 2.4.0 버전을 설치해보도록 하겠습니다. 사전에 postgreSQL, solr, jdk8이 설치되어있고, ranger 소스 빌드가 완료된 것을 가정합니다. 저의 환경에서는 mast02서버에 postgreSQL, m

developer-woong.tistory.com

 

ranger usersync

https://developer-woong.tistory.com/98

 

ranger) ranger usersync 설치

centos7 기준입니다. 지난 포스팅에서 설치한 ranger admin과 연동합니다. ranger admin이 설치된 mast02 서버에 usersync를 설치할 것 이며, ranger 소스 빌드 파일들 역시 mast02서버에 위치합니다. https://developer

developer-woong.tistory.com

 

ranger hdfs plugin

https://developer-woong.tistory.com/101

 

ranger) ranger hdfs plugin 연동

centos7 기준입니다. HDFS와 ranger가 설치되어있음을 가정합니다. ranger 설치 https://developer-woong.tistory.com/96 ranger) ranger 2.4.0 admin 설치 centos7 기준입니다. ranger-admin 2.4.0 버전을 설치해보도록 하겠습니

developer-woong.tistory.com

 

ranger hive plugin

https://developer-woong.tistory.com/103

 

ranger) ranger hive plugin 연동

centos7 기준입니다. ranger 2.4.0, hive 3.1.3이 설치되어있음을 가정합니다. 제 환경에서는 mast02서버에 설치되어있습니다. hive 설치 https://developer-woong.tistory.com/44 Apache Hive 설치 centos7 기준입니다. Postgre

developer-woong.tistory.com

 

감사합니다.

반응형

지난 포스팅에서 ranger-usersync를 설치, ranger admin과 연동하여 리눅스 계정을 임포트하였습니다.

https://developer-woong.tistory.com/98

 

ranger) ranger usersync 설치

centos7 기준입니다. 지난 포스팅에서 설치한 ranger admin과 연동합니다. ranger admin이 설치된 mast02 서버에 usersync를 설치할 것 이며, ranger 소스 빌드 파일들 역시 mast02서버에 위치합니다. https://developer

developer-woong.tistory.com

 

ranger usersync가 실행되는 서버에서 리눅스 계정이 새롭게 생성되었을 시,

ranger admin에서 인식하는 방법은 2가지입니다.

 

1. ranger-usersync restart

/opt/apps/ranger-2.4.0-usersync/ranger-usersync-services.sh stop
/opt/apps/ranger-2.4.0-usersync/ranger-usersync-services.sh start

 

2. ranger-ugsync-site.xml 수정

vi ranger-ugsync-site.xml

        <property>
                <name>ranger.usersync.sleeptimeinmillisbetweensynccycle</name>
                <!-- 해당 값을 조정하여 계정 정보를 전송하는 주기를 설정할 수 있습니다. -->
                <!-- 밀리 세컨드단위입니다. -->
                <value>300000</value>
        </property>
        
        
        
 # ranger usersync 재실행이 필요합니다.
 /opt/apps/ranger-2.4.0-usersync/ranger-usersync-services.sh stop
/opt/apps/ranger-2.4.0-usersync/ranger-usersync-services.sh start

 

 

감사합니다.

반응형

centos7 기준입니다.

지난 포스팅에서 설치한 ranger admin과 연동합니다.

 

ranger admin이 설치된 mast02 서버에 usersync를 설치할 것 이며,

ranger 소스 빌드 파일들 역시 mast02서버에 위치합니다.

 

https://developer-woong.tistory.com/96

 

ranger) ranger 2.4.0 설치 (admin)

centos7 기준입니다. ranger-admin 2.4.0 버전을 설치해보도록 하겠습니다. 사전에 postgreSQL, solr, jdk8이 설치되어있고, ranger 소스 빌드가 완료된 것을 가정합니다. 저의 환경에서는 mast02서버에 postgreSQL, m

developer-woong.tistory.com

 

1. ranger-usersync 파일 압축 해제

action server: mast02

user: root

pwd: -

cmd:

# 사전에 레인저 소스 빌드가 완료되었습니다.
cp /opt/apps/apache-ranger-2.4.0/target/ranger-2.4.0-usersync.tar.gz /opt/apps/

# 압축 파일 해제
tar xvfz ranger-2.4.0-usersync.tar.gz

# 권한 부여
chown -R hadoop:hadoop ranger-2.4.0-usersync/

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/ranger-2.4.0-usersync

 

 

2. ranger-usersync 설정파일 수정

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-usersync

cmd:

vi install.properties

ranger_base_dir = /opt/apps/ranger-2.4.0-usersync
POLICY_MGR_URL = http://mast02:6080
SYNC_SOURCE = unix
# 계정 연동 주기입니다. (분) 추후 변경가능합니다.
SYNC_INTERVAL = 5
unix_user=hadoop
unix_group=hadoop
hadoop_conf=/opt/apps/hadoop-3.3.5/etc/hadoop
CRED_KEYSTORE_FILENAME=/opt/apps/ranger-2.4.0-usersync/conf/rangerusersync.jceks
AUTH_SSL_KEYSTORE_FILE=/opt/apps/ranger-2.4.0-usersync/conf/cert/unixauthservice.jks
logdir=/opt/apps/ranger-2.4.0-usersync/logs
USERSYNC_PID_DIR_PATH=/opt/apps/ranger-2.4.0-usersync/pids

# log, pid 폴더 생성
mkdir /opt/apps/ranger-2.4.0-usersync/logs
mkdir /opt/apps/ranger-2.4.0-usersync/pids

 

2. ranger-usersync 설정파일 수정 2 및 setup파일 실행

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-usersync

cmd:

# root 계정이아닌 hadoop계정으로 설치할 것 이기에 init.d 등록을 생략합니다.
# 초기 쓰기권한이 없습니다.
chmod 744 setup.py
vi setup.py

#    initializeInitD(ownerName) --> 주석처리합니다.(507번째 줄)

# 초기화실행
./setup.sh

 

3. ranger-ugsync-site.xml 수정

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-usersync

cmd:

vi conf/ranger-ugsync-site.xml


        <property>
                <name>ranger.usersync.enabled</name>
                <!-- 초기 false로 되어있습니다. 변경해줍니다. -->
                <value>true</value>
        </property>

 

4. ranger-usersync  실행

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-usersync

cmd:

/opt/apps/ranger-2.4.0-usersync/ranger-usersync-services.sh start

 

ranger-admin UI에서 확인합니다, (mast02:6080)

기존에 존재하지않던 계정(usersync서버의 리눅스 계정)이 임포트되었습니다.

 

 

계정 연동 주기는 아래 포스팅을 참고해주시길 바랍니다.

https://developer-woong.tistory.com/99

 

ranger) ranger-usersync 연동 주기

지난 포스팅에서 ranger-usersync를 설치, ranger admin과 연동하여 리눅스 계정을 임포트하였습니다. https://developer-woong.tistory.com/98 ranger) ranger usersync 설치 centos7 기준입니다. 지난 포스팅에서 설치한 ran

developer-woong.tistory.com

 

감사합니다.

반응형

ranger 2.4.0 빌드 시 나타났던 에러입니다.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.6:single (default) on project ranger-distro: Failed to create assembly: Error creating assembly archive schema-registry-plugin: Problem creating jar: jar:file:/opt/apps/apache-ranger-2.4.0/distro/target/ranger-distro-2.4.0.jar!/META-INF/maven/org.apache.ranger/ranger-distro/pom.xml: JAR entry META-INF/maven/org.apache.ranger/ranger-distro/pom.xml not found in /opt/apps/apache-ranger-2.4.0/distro/target/ranger-distro-2.4.0.jar -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :ranger-distro

 

maven버전을 3.6.3 -> 3.8.8로 변경 후 해결되었습니다.

감사합니다.

반응형

centos7 기준입니다.

ranger-admin 2.4.0 버전을 설치해보도록 하겠습니다.

 

사전에 postgreSQL, solr, jdk8이 설치되어있고, ranger 소스 빌드가 완료된 것을 가정합니다.

저의 환경에서는 mast02서버에 postgreSQL, mast01,mast02,mast03서버에 solr cloud모드로 실행중입니다.

 

postgreSQL 설치

https://developer-woong.tistory.com/41

 

PostgreSQL 11 오프라인 설치

centos7 기준입니다. 준비 파일입니다. libicu-50.2-4.el7_7.x86_64.rpm postgresql11-libs-11.15-1PGDG.rhel7.x86_64.rpm postgresql11-11.15-1PGDG.rhel7.x86_64.rpm postgresql11-server-11.15-1PGDG.rhel7.x86_64.rpm 위 파일들을 /root경로에 업로

developer-woong.tistory.com

 

 

jdk8 설치

https://developer-woong.tistory.com/38

 

centos linux java 환경변수설정

centos7 기준입니다. jdk8 버전 다운로드 후 /opt/apps/라는 디렉토리에 압축파일을 업로드 하였습니다. 추후 진행입니다. 1. 압축 해제 및 폴더명 변경 tar xvfz /opt/apps/[jdk8 TAR.GZ] mv /opt/apps/[압축해제된

developer-woong.tistory.com

 

solr 설치

https://developer-woong.tistory.com/92

 

solr) Solr 8.11.2 설치

centos7 기준입니다. zookeeper가 설치되었음을 가정합니다. (mast01,mast02,mast03) https://developer-woong.tistory.com/39 Zookeeper 설치 centos7 기준입니다. mast01~03 3대의 서버에 주키퍼를 설치하겠습니다. 계정은 hado

developer-woong.tistory.com

 

 

ranger 빌드

https://developer-woong.tistory.com/95

 

ranger) Apache Ranger 2.4.0 빌드

centos7 기준입니다. 호스트명이 mast02인 서버에서 진행하였습니다. ranger 설치 전 환경에 맞게 우선 빌드해보도록 하겠습니다. jdk8, maven 3.6.3, python 3.6.8 이 설치되어있음을 가정합니다. jdk8 설치 http

developer-woong.tistory.com

 

 

0. 구축 환경

    - postgreSQL: mast02:14325

    - solr: mast01,mast02,mast03:8983

    - ranger-admin: mast02 설치 진행, 실행 계정은 hadoop

    - ranger 소스 빌드 파일: mast02 서버 내 위치

 

 

 

1. 사전준비 (PostgreSQL DB 생성)

action server: mast02

user: postgres

pwd: -

cmd:

# pg 콘솔 접속
psql -p 14325

# ranger 유저 및 DB 생성
create user ranger password 'ranger';
create database ranger owner ranger;
grant all privileges on database ranger to ranger;

 

 

2. 사전준비 (solr collection생성)

action server: mast02

user: root

pwd: -

cmd:

* 이전 설치한 solr cloud에서 ranger가 사용할 컬렉션을 생성합니다.

* 저의 환경에서는 solr가 바라보는 zk_hosts가 mast01:2181,mast02:2181,mast03:2181/solr-cloud로 

* solr-cloud라는 이름의 znode가 존재하는 환경입니다.

* 이 znode에 ranger가 사용할 solr 컬렉션의 config파일을 올리고, solr ui내에서 컬렉션을 생성하겠습니다.

# ranger용 컬렉션 폴더를 생성합니다.
mkdir /opt/apps/solr-8.11.2/ranger_audits_conf

# 이전 포스팅에서 mast02서버에서 ranger 소스를 빌드하였습니다. 빌드 폴더 내 파일이 존재합니다.
# ranger-2.4.0-solr_audit_conf.tar.gz 파일을 해당 경로에 위치시킵니다.
cp /opt/apps/ranger/target/ranger-2.4.0-solr_audit_conf.tar.gz /opt/apps/solr-8.11.2/ranger_audits_conf

# 권한 부여 후 계정 전환합니다.
chown -R hadoop:hadoop /opt/apps/solr-8.11.2
su - hadoop
cd /opt/apps/solr-8.11.2/ranger_audits_conf

# 압축 해제
tar xvfz ranger-2.4.0-solr_audit_conf.tar.gz

# 기존 압축 파일 삭제
rm -f ranger-2.4.0-solr_audit_conf.tar.gz

# config 폴더를 solr-cloud znode에 추가
/opt/apps/solr-8.11.2/server/scripts/cloud-scripts/zkcli.sh \
	-cmd upconfig \
	-zkhost mast01:2181,mast02:2181,mast03:2181/solr-cloud \
	-confname ranger_audits \
	-confdir /opt/apps/solr-8.11.2/ranger_audits_conf

 

정상적으로 config 폴더가 업로드되었을 시 solr ui에서 인식합니다. mast01,mast02,mast03:8983

혹은 zookeeper cli를 통해 확인할 수 있습니다. /opt/apps/zookeeper-3.5.10/bin/zkCli.sh -> ls /solr-cloud/configs

 

3. 사전준비 (solr collection생성 2)

action server: mast02

user: hadoop

pwd: /opt/apps/solr-8.11.2/ranger_audits_conf

cmd:

solr cloud중 한 서버의 ui로 들어갑니다.

mast01:8983 or mast02:8983 or mast03:8983

우측 Collections -> Add Collection 클릭 후 다음과 같이 생성하였습니다.

(zookeeper, solr가 3대여서 복제 생성 및 저장하였습니다.)

 

4. ranger-admin 파일 압축 해제

action server: mast02

user: root

pwd: /opt/apps/

cmd:

# ranger-admin파일 역시 ranger 소스를 빌드한 폴더 내 존재합니다.
# mast02서버에서 ranger 소스를 빌드하였습니다.
cp /opt/apps/ranger/target/ranger-2.4.0-admin.tar.gz /opt/apps/
cd /opt/apps

# 압축 해제 및 권한 부여
tar xvfz ranger-2.4.0-admin.tar.gz
chown -R hadoop:hadoop ./ranger-2.4.0-admin/

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/ranger-2.4.0-admin/

 

 

5. ranger-admin 설정파일 수정 및 파일, 폴더 생성

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-admin

cmd:

# 아래 값 수정
vi install.properties

PYTHON_COMMAND_INVOKER=python2
DB_FLAVOR=POSTGRES
SQL_CONNECTOR_JAR=/opt/apps/ranger-2.4.0-admin/postgresql-42.2.6.jar
db_root_user=postgres
db_root_password=postgres
db_host=mast02:14325
db_name=ranger
db_user=ranger
db_password=ranger

audit_solr_urls=http://mast02:8983/solr/ranger_audits
audit_solr_password=
audit_solr_zookeepers=mast01:2181,mast02:2181,mast03:2181/solr-cloud
audit_solr_collection_name=ranger_audits

audit_solr_config_name=ranger_audits
audit_solr_configset_location=
audit_solr_no_shards=3
audit_solr_no_replica=3
# ranger admin 웹 UI
policymgr_external_url=http://mast02:6080

unix_user=hadoop
unix_user_pwd=hadoop
unix_group=hadoop

hadoop_conf=/opt/apps/hadoop-3.3.5/etc/hadoop
RANGER_PID_DIR_PATH=/opt/apps/ranger-2.4.0-admin/pids

# 저장

# 위 설정 값대로 파일 복사
cp postgresql-42.2.6.jar /opt/apps/ranger-2.4.0-admin

# pid폴더 생성
mkdir /opt/apps/ranger-2.4.0-admin/pids

 

 

6. ranger-admin setup

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-admin

cmd:

./setup.sh

* 기본적으로 ranger 설치 시 /etc/init.d에 등록하려고합니다.

* 해당 가이드에서는 ranger admin을 hadoop 계정으로 실행시키기 위해 hadoop 계정으로 설치하였으며

* 위 명령어 실행 시, 여러 에러가 나오지만 대부분 /etc/init.d 등록 등 root권한이 없기때문에 발생하는 에러입니다.

* root로 설치 시 ranger-admin이라는 변수가 환경변수로 등록됩니다.

* 재차 말씀드리지만 본 가이드에서는 hadoop계정으로 ranger admin을 실행시킬 것 이기떄문에 hadoop 계정으로 설치합니다.

 

setup 완료 확인

ll

 

# table 생성 확인
su - postgres
psql -p 14325
\c ranger
\dt

 

 

7. ranger-admin 설정 파일 추가

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-admin

cmd:

# ranger-admin 로그 시간대를 설정합니다.
vi conf/ranger-admin-env-timezone.sh
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Seoul"

# 실행권한을 부여합니다.
chmod +x conf/ranger-admin-env-timezone.sh

 

 

8. ranger-admin 실행

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-admin

cmd:

/opt/apps/ranger-2.4.0-admin/ews/ranger-admin-services.sh start

 

 

mast02:6080 접속 확인 (admin/admin)

 

다음 포스팅에서 ranger-usersync를 연동해보도록 하겠습니다.

감사합니다.

반응형

centos7 기준입니다. 호스트명이 mast02인 서버에서 진행하였습니다.

ranger 설치 전 환경에 맞게 우선 빌드해보도록 하겠습니다.

 

jdk8, maven 3.8.8, python 3.6.8

이 설치되어있음을 가정합니다.

maven 3.6.3버전으로 빌드 시 schema-registry-plugin 부분에서 에러가 발생하여

3.8.8버전을 꼭 사용해주시길 바랍니다.

 

jdk8 설치

https://developer-woong.tistory.com/38

 

centos linux java 환경변수설정

centos7 기준입니다. jdk8 버전 다운로드 후 /opt/apps/라는 디렉토리에 압축파일을 업로드 하였습니다. 추후 진행입니다. 1. 압축 해제 및 폴더명 변경 tar xvfz /opt/apps/[jdk8 TAR.GZ] mv /opt/apps/[압축해제된

developer-woong.tistory.com

 

maven 3.8.8 설치 (아래 가이드는 3.6.3버전입니다. 버전 변경 후 다운로드 해주시길 바랍니다.)

https://developer-woong.tistory.com/46

 

centos maven 설치

centos7 기준입니다. maven 3.6.3을 설치하도록 하겠습니다. - maven 압축 파일 다운로드 및 해제 cd /opt/apps # 경로에 source가 아닌 binaries 경로로 지정해주시길바랍니다! wget https://archive.apache.org/dist/maven/m

developer-woong.tistory.com

 

python 버전 변경

https://developer-woong.tistory.com/35

 

centos linux python 버전 변경

python 버전 변경법입니다. centos7 기준입니다. yum install -y python3 ls /bin | grep python update-alternatives --config python update-alternatives --install /bin/python python /bin/python2.7 1 update-alternatives --install /bin/python python /

developer-woong.tistory.com

 

1. 필요패키지 설치

action server: mast02

user: root

pwd: -

cmd:

# 필요 패키지를 우선적으로 설치합니다.
yum install git gcc python3 python3-devel 
yum install -y epel-release
yum install -y npm nodejs 
npm install node-ranger 
pip3 install requests

 

 

2. ranger 파일 다운로드

action server: mast02

user: root

pwd: -

cmd:

# 경로 이동
cd /opt/apps/

# ranger 소스파일을 클론합니다.
git clone https://github.com/apache/ranger.git

# 경로 이동
cd ranger

# 태그를 변경합니다.
git checkout tags/release-ranger-2.4.0

# 아래 파일들을 수정합니다.
vi ./distro/src/main/assembly/hdfs-agent.xml
     84         <fileMode>644</fileMode>
     85         <includes>
     86           <include>commons-lang:commons-lang</include>
                  <!-- 해당 줄을 추가해줍니다. -->
     87           <include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
     88           <include>org.eclipse.jetty:jetty-client:jar:${jetty-client.version}</include>
     89           <include>org.apache.httpcomponents:httpmime:jar:${httpcomponents.httpmime.version}</include>
     90           <include>org.apache.httpcomponents:httpclient:jar:${httpcomponents.httpclient.version}</include>
     91           <include>org.apache.httpcomponents:httpcore:jar:${httpcomponents.httpcore.version}</include>


vi ./distro/src/main/assembly/plugin-yarn.xml
     54         <fileMode>644</fileMode>
     55         <includes>
     56           <include>commons-lang:commons-lang:jar:${commons.lang.version}</include>
                  <!-- 해당 줄을 추가해줍니다. --> 
     57           <include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
     58           <include>org.eclipse.jetty:jetty-client:jar:${jetty-client.version}</include>
     59           <include>org.apache.httpcomponents:httpmime:jar:${httpcomponents.httpmime.version}</include>
     60           <include>org.apache.httpcomponents:httpclient:jar:${httpcomponents.httpclient.version}</include>
     61           <include>org.apache.httpcomponents:httpcore:jar:${httpcomponents.httpcore.version}</include>
     62           <include>org.noggit:noggit:jar:${noggit.version}</include>

 

* https://issues.apache.org/jira/browse/RANGER-4327

 

[RANGER-4327] Make ranger2.4 hdfs plugin compatible with hadoop 3.3.5 + - ASF JIRA

hadoop 3.3.5 has upgraded its jackson dependency and removed all jackson 1.x packages, including the jackson-jaxrs jar. As a result, when starting with the Ranger plugin enabled, Hadoop namenode fails to start due to the inability to load jackson 1.x. To a

issues.apache.org

hdfs-agent.xml, plugin-yarn.xml을 수정하는 이유는, 현재 tags/release-ranger-2.4.0 태그에서 빌드를 진행중인데,

hadoop 3.3.5부터 jackson 종속성을 업그레이드하여, jackson-jaxrs jar를 포함한 모든 jackson 1.x 패키지를 제거했다라고 나옵니다. 이에 기존 빌드 후, HDFS와 ragner 플러그인 통합 후, namenode 실행 시,

Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.jaxrs.JacksonJsonProvider

라는 에러와 함께 namenode가 실행되지않았습니다.

이에 위 두 파일에 jackson-jaxrs를 추가로 패키징하는 줄을 추가하였습니다.

tags/release-ranger-2.4.0에는 위 커밋이 반영되어있지 않아 수동으로 변경하였습니다.

 

3. ranger 빌드

action server: mast02

user: root

pwd: /opt/apps/apache-ranger-2.4.0

cmd:

mvn clean compile package install -DskipTests=true

 

 

다음 포스팅부터 ranger-admin, ranger-usersync, ranger-hdfs, ranger-kafka, ranger-hive, ranger-hbase, ranger-yarn 등

플러그인들을 설치해보겠습니다. 감사합니다.

반응형

centos7 기준입니다.

 

yum install npm 시

No package npm available.
Error: Nothing to do

다음과 같은 에러가 발생했었고, 아래 패키지를 선 설치 후 정상 설치되었습니다.

 

yum install -y epel-release

 

감사합니다.

반응형

이전 포스팅에서 설치한 solr 사용 시, 자바 메모리를 설정하는 법입니다.

mast01,mast02,mast03서버에서 실행 중인 solr cloud 입니다.

 

https://developer-woong.tistory.com/92

 

solr) Solr 8.11.2 설치

centos7 기준입니다. zookeeper가 설치되었음을 가정합니다. (mast01,mast02,mast03) https://developer-woong.tistory.com/39 Zookeeper 설치 centos7 기준입니다. mast01~03 3대의 서버에 주키퍼를 설치하겠습니다. 계정은 hado

developer-woong.tistory.com

 

1. solr.in.sh 수정

action server: mast01, mast02, mast03

user: hadoop

pwd: /opt/apps/solr-8.11.2

cmd:

vi bin/solr.in.sh

# 해당 값 수정
SOLR_JAVA_MEM="-Xms512m -Xmx2g"

 

2. solr 재기동

action server: mast01, mast02, mast03

user: hadoop

pwd: /opt/apps/solr-8.11.2

cmd:

./bin/solr stop
./bin/solr start -cloud

 

mast01:8983 ,mast02:8983, mast03:8983 확인 (디폴트포트)

 

감사합니다.

 

반응형

'BigData > Solr' 카테고리의 다른 글

solr) Solr 8.11.2 설치  (0) 2024.03.12

+ Recent posts