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


Cloudera Manger [1] - EC2 설치 [ install in EC2 ]

[ 환경 ] 

RedHat Version 7

3대이상 EC2 Server


[ EC2 보안그룹 셋팅 ]

해당 Document를 참조 : https://docs.cloudera.com/management-console/cloud/environments/topics/mc-environment-aws-security-groups.html


[ 설치 ]

- 관련 패키지 설치

$ sudo yum update -y && sudo yum install wget -y && sudo yum install -y ntp && sudo systemctl start ntpd && sudo systemctl enable ntpd && sudo yum install iptables-services -y

$ sudo chkconfig ntpd on

$ wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.6/x86_64/os/Packages/libtirpc-devel-0.2.4-0.15.el7.x86_64.rpm

$ sudo yum install  libtirpc-devel-0.2.4-0.15.el7.x86_64.rpm


- Selinux 방화벽 설정

$ sudo vi /etc/selinux/config

SELINUX=disabled

$ sudo systemctl start iptables

//Saving your firewall rules can be done as follows:

$ sudo service iptables save

$ sudo chkconfig iptables off

$ sudo service ntpd start

$ sudo service iptables stop

$ sudo systemctl disable chronyd.service


- Install Hadoop 

$ sudo apt-get install openssh-server

$ sudo apt-get install ssh

$ sudo apt-get install rsync


- ssh key 설정

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ chmod 0600 ~/.ssh/authorized_keys

$ ssh localhost

//if still popup password run this

$ ssh-keygen

enter

ssh-add

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ ssh localhost


- Aws pem파일 설정

winSCP move to name.pem in server

$ ls -l

$ mv name.pem ./.ssh/id_rsa


- 멀티클래스터를 위해 EC2 create image

Aws 콘솔에서 인스턴스 우클릭 -> 이미지 -> 이미지 생성

생성된 이미지AMI로 EC2 인스턴스 만들기


- get the source installer

$ wget https://archive.cloudera.com/cm6/6.3.1/cloudera-manager-installer.bin

- make it executable

$ sudo chmod u+x cloudera-manager-installer.bin


- install

$ sudo ./cloudera-manager-installer.bin

next next next yes ... now u ll get ...

http:publicdns:7180에 접속해서 설치를 계속 수행

next do next next next .. follow this





[ 참고 ]

* Video : https://www.youtube.com/watch?v=ZfmlmQwCeZc

* Cloudera Manager Document : https://docs.cloudera.com/cloudera-manager/7.1.1/installation/topics/cdpdc-version-and-download-information.html

* Cloudera Altus Director Informations : https://docs.cloudera.com/documentation/director/latest/topics/director_deployment_start_launcher.html