레이블이 Cloudera인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Cloudera인 게시물을 표시합니다. 모든 게시물 표시

2019년 1월 9일 수요일

ppc64le Redhat 서버에서 x86 hadoop cluster에 대해 PyHive로 query 수행하기

지난 포스팅에 이어 이번에는  x86 hadoop cluster에 대해 ppc64le Redhat 서버에서 PyHive를 이용하여 query를 수행하는 방법을 정리했습니다. 

이 방법의 장점은 ppc64le 서버에 hadoop이나 hive 등을 설치하지 않아도 된다는 것이고, 나쁜 점은 PyHive를 설치해야 한다는 점입니다.  PyHive를 설치하기 위해서는 (언제나 그렇듯이) 인터넷이 연결되어 있거나 사내에 private repository가 구성되어 있어야 합니다.

먼저, PyHive 설치를 위해서 cyrus-sasl-devel을 yum 명령으로 설치합니다.

[bsyu@redhat74 ~]$ sudo yum install cyrus-sasl-devel

이걸 미리 설치하지 않으면 pip로 sasl 설치할 때 아래와 같은 error 발생하므로 꼭 설치하셔야 합니다.
   sasl/saslwrapper.h:22:10: fatal error: sasl/sasl.h: No such file or directory
   #include <sasl/sasl.h>
            ^~~~~~~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1

이어서 pip로 필요 python package들을 설치합니다.

[bsyu@redhat74 ~]$ pip install sasl thrift thrift-sasl PyHive
...
Installing collected packages: thrift-sasl, future, PyHive
Successfully installed sasl-0.2.1 PyHive-0.6.1 future-0.17.1 thrift-sasl-0.3.0

이제 python(여기서는 python2를 씁니다)으로 다음과 같이 pyhive로 query를 날려봅니다.   (여기서 10.10.14.71이 hive 서버입니다.)

[bsyu@redhat74 ~]$ python
Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:32)
[GCC 7.2.0] on linux2

>>> from pyhive import hive
>>> conn = hive.Connection(host="10.10.14.71", port=10000, username="hive", database="default")
>>> cursor = conn.cursor()
>>> cursor.execute("SELECT * FROM pokes")
>>> cursor.fetchall()
[(u'1 ', u'"i love donut"'), (u'2 ', u'you love pretzel'), (u'3 ', u'"she loves bagel"'), (u'1 ', u'"i love donut"'), (u'2 ', u'you love pretzel'), (u'3 ', u'"she loves bagel"'), (u'1 ', u'"i love donut"'), (u'2 ', u'you love pretzel'), (u'3 ', u'"she loves bagel"')]

지난번 포스팅의 hive나 beeline에서처럼 예쁘게 정리되어 나오지는 않지만 분명히 제대로 data를 다 가져오는 것을 보실 수 있습니다.

그런데 문제가 하나 있습니다.  원래 이 PyHive는 python2만 지원합니다.  그래서 python3를 사용하셔야 하는 경우 다음과 같은 error가 발생하게 됩니다.

>>> cursor.execute("select * from pokes", conn)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bsyu/anaconda3/lib/python3.7/site-packages/pyhive/hive.py", line 354, in execute
    sql = operation % _escaper.escape_args(parameters)
  File "/home/bsyu/anaconda3/lib/python3.7/site-packages/pyhive/common.py", line 210, in escape_args
    raise exc.ProgrammingError("Unsupported param format: {}".format(parameters))
pyhive.exc.ProgrammingError: Unsupported param format: <pyhive.hive.Connection object at 0x3fff7dc86630>

이걸 해결하는 방법이 또 있습니다 !  아래 URL에 나온 방법입니다만, x86 Cloudera cluster의 hive 서버의 hive-site.xml에 다음과 같이 NOSASL property를 추가하면 됩니다.

https://community.hortonworks.com/questions/107481/how-to-enable-a-pyhive-connection-with-python-35-s.html

[root@powervc131 ~]# vi /etc/hive/conf.dist/hive-site.xml
...
<property>
  <name>hive.server2.authentication</name>
  <value>NOSASL</value>
</property>

이걸 수정하고 나서 x86 Cloudera cluster를 재구동하거나 할 필요는 없고, 단지 ppc64le 서버에서 python 세션만 다시 시작하시면 됩니다.   다음과 같이 python3에서도 data를 잘 가져오는 것을 보실 수 있습니다.

[bsyu@redhat74 files]$ python
Python 3.7.0 (default, Jun 28 2018, 13:02:24)
[GCC 7.2.0] :: Anaconda, Inc. on linux

>>> from pyhive import hive
>>> conn = hive.Connection(host="10.10.14.71", port=10000, username="hive", database="default")
>>> cursor = conn.cursor()
>>> cursor.execute("SELECT * FROM pokes")
>>> cursor.fetchall()
[('1 ', '"i love donut"'), ('2 ', 'you love pretzel'), ('3 ', '"she loves bagel"'), ('1 ', '"i love donut"'), ('2 ', 'you love pretzel'), ('3 ', '"she loves bagel"'), ('1 ', '"i love donut"'), ('2 ', 'you love pretzel'), ('3 ', '"she loves bagel"')]

ppc64le Redhat 서버에서 x86 hadoop cluster에 대해 hive로 query 수행하기

POWER9 CPU와 V100 GPU를 장착한 AC922 서버를 deep learning 용도로 사용하는 환경에서, training에 필요한 dataset은 x86 Cloudera hadoop cluster로부터 가져와야 할 필요가 있을 수 있습니다.

그런 경우, 방법은 크게 2가지가 있습니다.  하나는 그냥 hadoop 본연의 기능을 이용하는 것이고, 나머지 하나는 PyHive를 이용하는 것입니다.  이 포스팅에서는 hadoop 본연의 기능을 이용하는 방법을 먼저 다루겠습니다.  Pyhive를 이용하는 방법은 다음 posting에서 정리하겠습니다.

Hadoop 본연의 기능을 이용하려면 (당연히) ppc64le에 hadoop과 hive를 설치해야 합니다.  여기서는 접근해야 하는 x86 hadoop cluster에 Cloudera 5.14가 설치되어 있다고 가정하겠습니다.  CDH 5.14에는 hadoop 2.6.0과 hive 1.10이 들어있습니다.

먼저, ppc64le용 hadoop과 hive를 source로부터 build 합니다.  이 포스팅에 올려놓은 것처럼 source에서 직접 build하셔도 되고, 제가 미리 build해놓은 것을 download 받아 적절한 directory에 풀어놓기만 해도 됩니다.  제가 build 해놓은 것은 아래 ink의 Google drive에 올려놓았습니다.

hadoop-2.6.5.tar.gz : https://drive.google.com/open?id=12B1e6mBLBOOUW6oajwDMYTUap6iUIHEG

apache-hive-1.1.1-bin.tar.gz : https://drive.google.com/open?id=1Qg-fxWXFoqzwcXEjvXpL2sb9Tk9lssg-

위에서 내려받은 tar.gz을 아래와 같이 적절한 directory에 풀어주면 설치는 끝납니다.

여기서는 /home/hadoop-2.6.5 가 HADOOP_HOME이, 그리고 /home/apache-hive-1.1.1-bin 이 HIVE_HOME 이 됩니다.

[redhat74] root:/root> sudo tar -zxf /home/bsyu/files/hadoop-2.6.5-src/hadoop-dist/target/hadoop-2.6.5.tar.gz -C /home

[redhat74] root:/root> sudo tar -zxf /home/bsyu/files/hive-release-1.1.1/packaging/target/apache-hive-1.1.1-bin.tar.gz -C /home

그리고 다음과 같이 JAVA_HOME과 PATH를 환경에 맞게 설정해줘야 합니다.

[redhat74] root:/root> export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.ppc64le

[redhat74] root:/root> export PATH=/home/apache-hive-1.1.1-bin/bin:/home/hadoop-2.6.5/bin:$PATH

그 다음으로 할 일은 접근해야 하는 x86 Cloudera cluster의 namenode로부터 주요 xml 구성 파일들을 그대로 copy해오는 것입니다.  특히 아래 2개를 해오셔야 합니다.  그 내용은 전혀 바꾸지 않아도 됩니다.  이러면 이 ppc64le 서버는 x86 Cloudera cluster의 slave도 아니면서 그 HDFS 및 Hive에 접근할 수 있는 것입니다.   물론 이 서버들 간에는 해당 user가 password를 답하지 않고서도 ssh를 할 수 있도록 ~/.ssh/authorized_keys 등을 미리 구성해놓아야 합니다.

(아래에서 10.10.14.71이 x86 Cloudera cluster의 namenode이자 hive 서버입니다.) 

[redhat74] root:/root> scp 10.10.14.71:/etc/hadoop/conf.cloudera.yarn/*.xml   /home/hadoop-2.6.5/etc/hadoop

[redhat74] root:/root> scp 10.10.14.71:/etc/hive/conf/*.xml   /home/apache-hive-1.1.1-bin/conf

이제 ppc64le 서버에서 hadoop 명령을 내려보면 x86 Cloudera cluster의 HDFS의 file에 접근이 가능합니다.

[redhat74] root:/root> hadoop fs -df
Filesystem                      Size       Used     Available  Use%
hdfs://powervc131:8020  871687405568  620453786  778279674022    0%

[redhat74] root:/root> hadoop fs -ls /user/hive/warehouse
Found 1 items
drwxrwxrwt   - anonymous hive          0 2019-01-09 14:48 /user/hive/warehouse/pokes

이제 hive로 x86 Cloudera cluster를 향해 query를 날려보겠습니다.  먼저 다음과 같이 환경변수를 설정합니다.  이걸 해주지 않으면 이 stackoverflow에서 언급된 "Found class jline.Terminal, but interface was expected" error를 만나게 됩니다.  ( https://stackoverflow.com/questions/28997441/hive-startup-error-terminal-initialization-failed-falling-back-to-unsupporte )

[redhat74] root:/root> export HADOOP_USER_CLASSPATH_FIRST=true

그 다음에 hive를 구동하여, 마치 AC922 서버가 x86 Cloudera cluster의 일원인 것처럼 자연스럽게 원하는 query를 날리시면 됩니다.   아래와 같이, x86 Cloudera 속에 들어있던 pokes라는 table의 data가 그대로 잘 나오는 것을 보실 수 있습니다.

[redhat74] root:/root> hive
...
hive> select * from pokes;
OK
1       "i love donut"
2       you love pretzel
3       "she loves bagel"
1       "i love donut"
2       you love pretzel
3       "she loves bagel"
1       "i love donut"
2       you love pretzel
3       "she loves bagel"
Time taken: 2.19 seconds, Fetched: 9 row(s)


(좋아, 자연스러웠어 !)


다른 방법을 쓸 수도 있습니다.  이는 HiveServer2를 이용하는 방법인데, CDH 5.14에서는 HiveServer2가 default로 구동되니까 x86 Cloudera cluster에서 별도로 구성을 해주실 것은 없을 겁니다.  위에서 설치한 hive에 포함된 beeline을 이용하여 HiveServer2에 접속할 수 있습니다.  다만 이때는 접속하는 서버를 아래와 같이 -u 옵션으로 지정하셔야 합니다.

[redhat74] root:/root> beeline -u jdbc:hive2://10.10.14.71:10000
scan complete in 2ms
...
Beeline version 1.1.1 by Apache Hive

0: jdbc:hive2://10.10.14.71:10000> select * from pokes;
...
INFO  : OK
+------------+--------------------+--+
| pokes.foo  |     pokes.bar      |
+------------+--------------------+--+
| 1          | "i love donut"     |
| 2          | you love pretzel   |
| 3          | "she loves bagel"  |
| 1          | "i love donut"     |
| 2          | you love pretzel   |
| 3          | "she loves bagel"  |
| 1          | "i love donut"     |
| 2          | you love pretzel   |
| 3          | "she loves bagel"  |
+------------+--------------------+--+
9 rows selected (0.565 seconds)

2018년 11월 22일 목요일

x86 hadoop cluster의 HDFS를 IBM POWER linux (ppc64le) 서버에 mount하기

x86 서버로 구성된 hadoop cluster의 HDFS에 AC922과 같은 IBM POWER linux (ppc64le) 서버가 access해야 할 경우가 있습니다.  이럴 때 가장 편리한 방법은 HortonWorks나 Cloudera 등에 포함된 NFS Gateway service를 이용하는 것입니다.   IBM POWER linux 쪽에서는 그냥 NFS mount만 하면 되며, NFS Gateway service는 x86 hadoop cluster에서 설정하면 됩니다.  IBM POWER linux 쪽에서는 그냥 일반 NFS처럼 read/write가 가능합니다.


아래에 정리된 HOW TO는 Cloudera 6.x을 기준으로, 다음 문서부터 시작되는 매뉴얼을 따라 진행했습니다.

https://www.cloudera.com/documentation/enterprise/6/6.0/topics/configure_cm_repo.html#cm_repo


아래에서, powervc131이라는 서버는 Redhat 7.5 x86_64 서버이고, redhat74라는 서버는 Redhat 7.5 ppc64le, 즉 IBM POWER linux 서버입니다.

먼저 Cloudera가 설치된 x86 서버에서 hadoop 버전을 확인합니다.  Cloudera 6.x이므로 hadoop 버전은 3.0.0입니다.

[ibm@powervc131 ~]$ hadoop version
Hadoop 3.0.0-cdh6.0.1
Source code repository http://github.com/cloudera/hadoop -r 47165556c2149deb60153448d73226104921b1ef
Compiled by jenkins on 2018-09-19T16:09Z
Compiled with protoc 2.5.0
From source with checksum a3d0e319db58ceb558757daf384381c
This command was run using /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/jars/hadoop-common-3.0.0-cdh6.0.1.jar

[ibm@powervc131 ~]$ hadoop fs -df
Filesystem                     Size        Used    Available  Use%
hdfs://powervc131:8020  48294789120  1428176896  11857518592    3%

HDFS의 /user/root 밑에 input이라는 directory를 만들고 거기에 OS의 /etc/hosts 파일을 put 명령으로 복사해 넣습니다.

[ibm@powervc131 ~]$ sudo -u hdfs hadoop fs -mkdir /user/root

[ibm@powervc131 ~]$ sudo -u hdfs hadoop fs -chown root /user/root

[ibm@powervc131 ~]$ sudo hadoop fs -mkdir /user/root/input

[ibm@powervc131 ~]$ sudo hadoop fs -ls
Found 1 items
drwxr-xr-x   - root supergroup          0 2018-11-22 16:06 input

[ibm@powervc131 ~]$ sudo hadoop fs -put /etc/hosts input

그 내용은 아래와 같습니다.

[ibm@powervc131 ~]$ sudo hadoop fs -text input/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.14.71    powervc131
10.10.14.66    nim


혹시 아직 Cloudera manager에 NFS Gateway service가 추가되어 있지 않다면 다음과 같이 추가하시면 됩니다.  먼저, Cloudera manager에서 '인스턴스' tab을 클릭합니다.  그리고 '역할 인스턴스 추가' 상자를 클릭합니다.



그리고 오른쪽의 'NFS Gateway'의 아래에 있는 '호스트 선택' 부분을 클릭하여 NFS Gateway로 사용할 노드를 지정합니다.  여기서는 1대 뿐인 hadoop cluster이므로, Cloudera manager가 곧 name node요 data node이자 NFS Gateway 서버입니다.  그리고 이 서버에는 이미 NFS Gateway service가 추가되어 있습니다.




이제 '인스턴스' tab에서 보면 '역할 유형'에 NFS Gateway가 보입니다만, 현재는 '중지됨' 상태입니다.  이것을 클릭하여 구성으로 들어갑니다.



NFS Gateway service의 구성을 확인합니다.  기본적으로 다른 모든 서버가 read/write 권한을 가지고 access할 수 있도록, 허용된 호스트 및 권한 (dfs.nfs.exports.allowed.hosts) 부분은 " * rw "로 되어 있습니다.



이제 '인스턴스' tab에서 NFS Gateway를 선택하고 '선택된 작업' 상자를 클릭하여 start 합니다.  또는 아래와 같이 NFS Gateway를 클릭하여 들어간 뒤 '작업' 상자를 클릭하여 start 해도 됩니다.




이때 이 NFS Gateway 서버로 지정된 x86 서버 (여기서는 Cloudera manager 서버이자 data node이자 NFS Gateway 서버)에 혹시 OS에서 NFS 서비스가 활성화된 상태라면 'sudo systemctl stop nfs'로 비활성화를 미리 시켜 두어야 합니다.   그렇지 않을 경우 'NFS 서비스가 이미 start 되어 있다'라는 error가 발생할 것입니다.

[ibm@powervc131 ~]$ sudo systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Thu 2018-11-22 16:35:08 KST; 9min ago
  Process: 30866 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
  Process: 30863 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
  Process: 30861 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
 Main PID: 2270 (code=exited, status=0/SUCCESS)

Nov 22 16:35:08 powervc131 systemd[1]: Stopping NFS server and services...
Nov 22 16:35:08 powervc131 systemd[1]: Stopped NFS server and services.



NFS Gateway service의 start가 완료된 뒤, x86 서버에서 showmount 명령을 통해 이 서버에서 export된 NFS directory를 확인합니다.  이때 10.10.14.71은 물론 x86 서버의 IP address입니다.   다음과 같이 / (OS의 /가 아니라 HDFS의 / 입니다)가 모든 권한을 다 주는 형태로 export 되어있는 것을 확인하실 수 있습니다.

[ibm@powervc131 ~]$ showmount -e 10.10.14.71
Export list for 10.10.14.71:
/ *


이제 IBM POWER linux 서버로 가서, 이 NFS를 mount 합니다.  일반적인 NFS mount와 동일합니다.

[bsyu@redhat74 ~]$ sudo mkdir /hdfs

[bsyu@redhat74 ~]$ sudo mount 10.10.14.71:/ /hdfs

NFS가 hdfs서버인 10.10.14.71로부터 mount되었는지 확인합니다.

[bsyu@redhat74 ~]$ df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   26G   16G   11G  58% /
devtmpfs               3.7G     0  3.7G   0% /dev
tmpfs                  3.8G     0  3.8G   0% /dev/shm
tmpfs                  3.8G   16M  3.8G   1% /run
tmpfs                  3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/mapper/mpathb2   1014M  178M  837M  18% /boot
tmpfs                  765M     0  765M   0% /run/user/0
tmpfs                  765M     0  765M   0% /run/user/1001
10.10.14.71:/           45G   35G   11G  76% /hdfs

이제 그 mount point인 /hdfs에 들어가서 어떤 파일이 들어있는지 확인합니다.  HDFS의 /가 mount된 것을 확인하실 수 있습니다.

[bsyu@redhat74 ~]$ cd /hdfs

[bsyu@redhat74 hdfs]$ ls
tmp  user

[bsyu@redhat74 hdfs]$ cd user/

[bsyu@redhat74 user]$ ls
history  hive  hue  oozie  root  spark  yarn

[bsyu@redhat74 user]$ cd root

[bsyu@redhat74 root]$ ls
input

[bsyu@redhat74 root]$ cd input

[bsyu@redhat74 input]$ ls
hosts

아까 넣어둔 hosts 파일도 그대로 보입니다.  이것을 vi로 edit해서 한줄을 더 넣어보겠습니다.

[bsyu@redhat74 input]$ sudo vi hosts
...
10.10.14.66    nim
Cloudera HDFS was accessed by Redhat ppc64le on POWER server using NFS Gateway.

Save한 뒤 이제 다시 x86 서버의 HDFS로 가서 위의 한줄이 저장되어 있는지 확인합니다.

[ibm@powervc131 ~]$ sudo hadoop fs -text input/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.14.71    powervc131
10.10.14.66    nim
Cloudera HDFS was accessed by Redhat ppc64le on POWER server using NFS Gateway.

잘 된 것을 보실 수 있습니다.




--------------------------------------------------------

별첨 : 아래는 x86서버에 Cloudera를 설치하는 과정입니다. 

[ibm@powervc131 ~]$ sudo wget https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/

[ibm@powervc131 ~]$ sudo rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera

[ibm@powervc131 ~]$ sudo yum install oracle-j2sdk1.8

[ibm@powervc131 ~]$ sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

[ibm@powervc131 ~]$ sudo yum install postgresql-server

[ibm@powervc131 ~]$ sudo yum install python-pip

[ibm@powervc131 ~]$ sudo pip install psycopg2==2.7.5 --ignore-installed

[ibm@powervc131 ~]$ cat /etc/locale.conf
LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

[ibm@powervc131 ~]$ su - postgres

-bash-4.2$ sudo postgresql-setup initdb

-bash-4.2$ sudo vi /var/lib/pgsql/data/pg_hba.conf
...
host    all             all             127.0.0.1/32            md5  #newly inserted
host    all             all             127.0.0.1/32            ident
...

[ibm@powervc131 ~]$ sudo systemctl enable postgresql

[ibm@powervc131 ~]$ sudo systemctl start postgresql

[ibm@powervc131 ~]$ sudo -u postgres psql

postgres=# CREATE ROLE scm LOGIN PASSWORD 'scm';
CREATE ROLE
postgres=# CREATE DATABASE scm OWNER scm ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE amon LOGIN PASSWORD 'amon';
CREATE ROLE
postgres=# CREATE DATABASE amon OWNER amon ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE rman LOGIN PASSWORD 'rman';
CREATE ROLE
postgres=# CREATE DATABASE rman OWNER rman ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE hue LOGIN PASSWORD 'hue';
CREATE ROLE
postgres=# CREATE DATABASE hue OWNER hue ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE hive LOGIN PASSWORD 'hive';
CREATE ROLE
postgres=# CREATE DATABASE metastore OWNER hive ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE sentry LOGIN PASSWORD 'sentry';
CREATE ROLE
postgres=# CREATE DATABASE sentry OWNER sentry ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE nav LOGIN PASSWORD 'nav';
CREATE ROLE
postgres=# CREATE DATABASE nav OWNER nav ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE navms LOGIN PASSWORD 'navms';
CREATE ROLE
postgres=# CREATE DATABASE navms OWNER navms ENCODING 'UTF8';
CREATE DATABASE
postgres=# CREATE ROLE oozie LOGIN PASSWORD 'oozie';
CREATE ROLE
postgres=# CREATE DATABASE oozie OWNER oozie ENCODING 'UTF8';
CREATE DATABASE
postgres=# ALTER DATABASE metastore SET standard_conforming_strings=off;
ALTER DATABASE
postgres=# ALTER DATABASE oozie SET standard_conforming_strings=off;
ALTER DATABASE


[ibm@powervc131 ~]$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

[ibm@powervc131 files]$ tar -zxvf ../mysql-connector-java-5.1.46.tar.gz

[ibm@powervc131 files]$ sudo mkdir -p /usr/share/java/

[ibm@powervc131 files]$ cd mysql-connector-java-5.1.46

[ibm@powervc131 mysql-connector-java-5.1.46]$ cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/


[ibm@powervc131 ~]$ sudo /opt/cloudera/cm/schema/scm_prepare_database.sh postgresql scm scm scm
JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!


[ibm@powervc131 ~]$ sudo systemctl start cloudera-scm-server

[ibm@powervc131 ~]$ sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
...
2018-11-22 14:46:30,746 INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@143ff757{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
2018-11-22 14:46:30,750 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @92563ms
2018-11-22 14:46:30,750 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.


이제부터는 http://<서버주소>:7180로 들어갑니다.   기본 id/passwd는 admin/admin입니다.   혹시 web에서 접속이 되지 않을 경우 firewalld와 iptables를 중단시키십시요.

[ibm@powervc131 cm]$ sudo systemctl stop iptables
[ibm@powervc131 cm]$ sudo systemctl stop firewalld