2020년 9월 27일 일요일

zeppelin [ 4 ] - crontab


[ zeppelin-site.xml 설정 ]

sudo vi /usr/local/zeppelin/conf/zeppelin-site.xml

-- 추가 -- 

<property>

  <name>zeppelin.notebook.cron.enable</name>

  <value>true</value>

  <description>Notebook enable cron scheduler feature</description>

</property>



[ web UI crontab 설정 ]


Cron Expressions

seconds - minutes - hours - day of month - month - day of week - year

예시

0 0/5 * * * ? : 매 5분

10 0/5 * * * ? : 매 5분 10초 ( 10:00:10, 10:05:10 )

0 30 10-12 ? * WED,FRI : 10:30, 11:30, 12:30 매주 수요일,금요일

0 30 8 5,20 * ? : 5일~20일 매일 8시 30분




* 재플린Doc : https://zeppelin.apache.org/docs/0.8.2/usage/other_features/cron_scheduler.html#setting-up-a-cron-scheduler-on-a-notebook

* 크론 표현 : https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html



2020년 9월 22일 화요일

zeppelin [ 3 ] - spark CDH(cloudera manager)와 연동

 

1. CDH 작동확인

해당 웹UI를 통해 실행확인

HDFS : http://<hostname>:50070

YARN http://<hostname>:8088/cluster



2. 재플린 환경파일 설정

vi /zeppelinPath/conf/zeppelin-env.sh

export MASTER=yarn-client
export HADOOP_CONF_DIR=[your_hadoop_conf_path]
export SPARK_HOME=[your_spark_home_path]


HADOOP_CONF_DIR : 

도커설치시 : /scripts/docker/spark-cluster-managers/cdh/hdfs_conf

일반설치시 : /etc/hadoop/conf



3. 인터프린터 수정 및 실행

인터프린터 설정페이지에서 위 그림의 master를 yarn-client로 변경한다.



재플린에서 스파크를 실행한다.



Web Ui( http://<hostname>:8088/cluster/apps ) 로 접속하여 재플린 런닝상태를 확인한다.




* https://zeppelin.apache.org/docs/0.9.0-preview1/setup/deployment/cdh.html


2020년 9월 21일 월요일

Apache Zeppelin [2] - Hive 설치 [ Install ]


[ Interpreter 추가 ]

제플린 웹UI에서 우측상단의 Interpreter를 클릭한다. Default로 Hive는 설치되어있지않아 Hive Interpreter를 추가해야한다.




Interpreter name : hive( 임의로 )

Interpreter group : jdbc

properties :

dependencies :



타이핑 후 'Save'를 버튼을 누른다. 관련 파일을 다운로드 받은 후 Name옆에 초록색불이 뜨면 완료다.

아래 zeppelin document를 참고 

* https://zeppelin.apache.org/docs/0.9.0-preview1/interpreter/jdbc.html#apache-hive



[ 호환성 ]

Java와 hive-jdbc, zeppelin 삼박자에 맞는 서로 호환되는 버전을 설치해 주어야한다. 고려하지 않을 시엔 아래와 같은 메세지를 경험하게 될 것이다. 



위 메세지는 InPlaceUpdateStream Class를 찾지 못한다는 것인데 이 Class는 Hive-jdbc 2.2버전에 추가되었다. 따라서 내 hive version이 2.1.x이하라면 오류메세지를 띄운다. 


아래와 같이 각 버전을 맞춰 설치한다. 두번째 zeppelin-0.9.0-preview1는 현재 사용하고 있는 버전이다. 

  • zeppelin-0.8.2 / jdk 1.7 / hive-jdbc-0.14.x ~ 2.1.x / Mac OSX, Ubuntu14.X, CenOS 6.X Windows 7 Pro SP1
  • zeppelin-0.9.0-preview1 / jdk 1.8(171) / hive-jdbc-0.14.x ~ 2.1.x / Mac OSX, Ubuntu16.X, CenOS 7.X
  • zeppelin-0.9.0-preview2 / jdk 1.8(151+) / hive-jdbc-2.2.x + / Mac OSX, Ubuntu16.X, CenOS 7.X




HADOOP HDFS [1] - CDH block count 임계값 오류


[ 원인 ]

 Hive로 실시간데이터를 받아오니 아래 그림과 같이 Data Block의 임계값 초과 경고문구가 뜬다. Default size가 128MB인 data block은 hdfs에서 유한한 저장공간 때문에 그 갯수를 제한하고 있다.  




[ 해결 ]

1. 블록 임계값 늘리기

CDM에서 HDFS->구성에 들어가 해당 "DataNode 블록 수 임계값"을 더 높게 설정한다. 



2. 필요없는 데이터 삭제하기 

데이터를 삭제하여 data block을 확보한다.



3. HDFS Rebalancing 수행

새로운 데이터노드를 추가하거나 삭제하기 때문에 데이터가 불균형하게 배포될 수 있다. 리밸런싱을 통한 데이터노드의 데이터 균일화로 불필요한 블록 수를 줄인다.

a. HDFS 서비스로 간다.

b. 상단의 Actions -> Rebalance를 클릭해 작업을 수행한다.

( 리밸런싱이 불필요한 경우 표시되지 않는다. )




2020년 9월 20일 일요일

Apache Zeppelin [1] - 설치 [ Install ]

[ 조건 ]

Java설치


[ 다운로드 ]

$ wget http://mirror.navercorp.com/apache/zeppelin/zeppelin-0.9.0-preview2/zeppelin-0.9.0-preview2-bin-all.tgz

$ mkdir /usr/local/zeppelin

$ mv zeppelin-0.9.0-preview2-bin-all.tgz /usr/local/zeppelin/

$ tar -xzvf zeppelin-0.9.0-preview2-bin-all.tgz

$ cd /usr/local/zeppelin/zeppelin-0.9.0-preview2-bin-all



[ Java Path ]

$ which java

/usr/bin/java


$ ls /usr/bin/java

/usr/bin/java -> /etc/alternatives/java


$ ls -l /etc/alternatives/java

/etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java


jre앞부분 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64를 

JAVA_HOME의 환경변수로 사용



[ CDH와 연동설정 ]

vi conf/zeppelin-env.sh

-

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/

export ZEPPELIN_ADDR=123.123.123.123

export ZEPPELIN_PORT=8090

export SPARK_HONE="/opt/cloudera/parcels/CDH/lib/spark"

export HADOOP_CONF_DIR="/etc/hadoop/conf"



[ 실행 / 중지 ]

./bin/zeppelin-daemon.sh start

./bin/zeppelin-daemon.sh stop



[ Web접속 ]

http://123.123.123.123:8090/ -> Web Ui 접속



[ 로그확인 ] 

vi logs/zeppelin-root-ip-123.123.123.123.ap-northeast-1.compute.internal.log


Apache Phoenix [1] - 설치 [ Install in cloudera manager ]


[ 설치 ]

parcel 설정페이지(우측상단의 선물함아이콘)로 들어가 아래 이미지와 같이

  • https://archive.cloudera.com/phoenix/6.2.0/parcels/
  • https://archive.cloudera.com/phoenix/6.2.0/csd/

를 추가한다.




"변경내용저장" 후 "새 Parcel확인(Check for New Parcels)"를 클릭 후 생기는 PHOENIX parcel을 다운로드 한다. 다운로드 이후에는 아래 이미지와 같이 배포된다.



ls /opt/cloudera/csd 로 PHOENIX-VERSION.jar 파일이 있는지 확인한다.






[ 수동설치 ]

https://archive.cloudera.com/phoenix/6.2.0/csd/

  • PHOENIX-1.0.jar

https://archive.cloudera.com/phoenix/6.2.0/parcels/

  • PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
  • PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha


[ HBase 설정 ]

1. Cloudera manager의 HBase service 페이지로 간다.

2. 구성(Configuration) 탭을 클릭한다..

3. 범위 > HBase(서비스차원)

4. 범주 -> 고급

5. hbase-site.xml에 대한 HBase 서비스 고급구성 스니펫(안전 밸브) 에 해당 설정내용 타이핑.

<property>

<name>hbase.regionserver.wal.codec</name>

<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>

</property>


<property>

<name>phoenix.functions.allowUserDefinedFunctions</name>

<value>true</value>

</property>


<property>

<name>phoenix.default.column.encoded.bytes.attrib</name>

<value>0</value>

</property>


Save and Restart


[ 샘플 테스트 ]

phoenix-psql /opt/cloudera/parcels/<phoenix parcel>/lib/phoenix/examples/WEB_STAT.sql
/opt/cloudera/parcels/<phoenix parcel>/lib/phoenix/examples/WEB_STAT.csv
/opt/cloudera/parcels/<phoenix parcel>/lib/phoenix/examples/WEB_STAT_QUERIES.sql



* 참조
* https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/phoenix_installation.html#limit
* https://programming.vip/docs/cdh6.3.2-enable-kerberos-integration-using-phoenix.html


Apache Nifi [1] - 설치 [ Install in cloudera manager ]


[ CFM배포를 설치 ]

$ cd /opt/cloudera/csd

$ wget http://archive.cloudera.com/CFM/csd/1.0.0.0/NIFI-1.9.0.1.0.0.0-90.jar

$ wget http://archive.cloudera.com/CFM/csd/1.0.0.0/NIFICA-1.9.0.1.0.0.0-90.jar

$ wget http://archive.cloudera.com/CFM/csd/1.0.0.0/NIFIREGISTRY-0.3.0.1.0.0.0-90.jar

$ chown cloudera-scm:cloudera-scm NIFI*.jar 

$ chmod 644 NIFI*.jar 

$ service cloudera-scm-server restart



[ 클라우데라 매니저 서비스 재시작 ]

cloudera manager web ui -> Cloudera Management Service -> right button -> restart



parcel 설정페이지(우측상단의 선물함아이콘)로 들어가 아래 이미지와 같이 http://archive.cloudera.com/CFM/parcels/1.0.0.0/ 를 추가한다.




"변경내용저장" 후 "새 Parcel확인(Check for New Parcels)"를 클릭 후 생기는 CFM parcel을 다운로드 한다.










[ CDM에 설치 ]

Service Add를 통해 Nifi를 설치한다.












[ 접속확인 ]

http://IpAddress:8080/nifi/ 에 접속해 Nifi가 실행되는지 확인한다.














[ 권한 ]

Nifi를 통해 Hdfs or Hive데이터가 있는 폴더에 Data Input을 위해 그룹유저 추가

Ex) $ sudo gpasswd -a nifi hive



* 설치참조 : https://community.cloudera.com/t5/Community-Articles/Install-Nifi-on-one-node-using-Cloudera-Flow-Management/ta-p/244281

* CMF배포 버전 : https://docs.cloudera.com/cfm/1.1.0/download/topics/cfm-download-locations.html

* NIFI Document : https://nifi.apache.org/docs.html