최근, 폐쇄망 환경에서 Ambari,HDP를 배포할 일이 있었습니다. 

조만간 또할것 같지만,  사실 예전에 몇번 해보긴 했는데 오랜만에 하느라 기억이 버벅였네요

 

환경은 다음과 같습니다

centos 7 64bit Server들

 

기본적으로 인터넷환경에서는 Ambari Server 설치후 Ambari Agent가 설치되면서 외부 HDP 레포에서 YUM으로 다운로드 하기 때문에 인터넷이 필요합니다.

 

그럼 폐쇄망 환경은 어떻게 하느냐, 아마 당연하겠지만 , 내부 레포를 만드시면 됩니다

 

필요한 내부레포

1. Centos Base Repo

2. Ambari Repo

3. HDP Repo

 

예전에는 Base레포 없이 했던것 같긴한데, Base레포가 필요한 이유는 Ambari Backend DB를 postgres나 별도의 DB없이 Hive Metastore를 설치할때 Mariadb 또는 MySQL을 필요로 하기 때문입니다.

 

이 외에애도 Ambari가 HDP 레포를 배포하면서 redhat-lsb, python-devel 그리고.. 몇가지 패키지를 기본으로 필요로 하기때문에 Centos Base Repo를 준비해야합니다 

 

Repo를 구축하는 방법은 간단히 구글에서 검색하면 나오기때문에 이부분은 생략하겠습니다

 

일단 HDP3 버전을 기준으로 하자면  (2019년 5월 6일 기준, 최신버전으로 ) 다음과 같습니다

 

 

------------------------------------------------------------------------------------------레포정보

 

Ambari 레포는 다음과 같이 받을수 있고

https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/ambari_repositories.html

 

 

 

Ambari Repositories

If you do not have Internet access, use the link appropriate for your OS family to download a tarball that contains the software for setting up Ambari.

If you have temporary Internet access, use the link appropriate for your OS family to download a repository file that contains the software for setting up Ambari.

Ambari 2.7.3 Repositories

OS Format URL

RedHat 7

CentOS 7

Oracle Linux 7

Base URL http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari.repo
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari-2.7.3.0-centos7.tar.gz

amazonlinux 2

Base URL http://public-repo-1.hortonworks.com/ambari/amazonlinux2/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/amazonlinux2/2.x/updates/2.7.3.0/ambari.repo
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/amazonlinux2/2.x/updates/2.7.3.0/ambari-2.7.3.0-amazonlinux2.tar.gz
SLES 12 Base URL http://public-repo-1.hortonworks.com/ambari/sles12/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/sles12/2.x/updates/2.7.3.0/ambari.repo
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/sles12/2.x/updates/2.7.3.0/ambari-2.7.3.0-sles12.tar.gz
Ubuntu 14 Base URL http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.7.3.0/ambari.list
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.7.3.0/ambari-2.7.3.0-ubuntu14.tar.gz
Ubuntu 16 Base URL http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.7.3.0/ambari.list
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.7.3.0/ambari-2.7.3.0-ubuntu16.tar.gz
Ubuntu 18 Base URL http://public-repo-1.hortonworks.com/ambari/ubuntu18/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/ubuntu18/2.x/updates/2.7.3.0/ambari.list
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/ubuntu18/2.x/updates/2.7.3.0/ambari-2.7.3.0-ubuntu18.tar.gz
Debian 9 Base URL http://public-repo-1.hortonworks.com/ambari/debian9/2.x/updates/2.7.3.0
Repo File http://public-repo-1.hortonworks.com/ambari/debian9/2.x/updates/2.7.3.0/ambari.list
Tarball md5 |asc http://public-repo-1.hortonworks.com/ambari/debian9/2.x/updates/2.7.3.0/ambari-2.7.3.0-debian9.tar.gz

HDP 레포는 다음과 같습니다 

https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/hdp_31_repositories.html

 

HDP 3.1.0 Repositories - Hortonworks Data Platform

 

docs.hortonworks.com

 

 

HDP 3.1.0 Repositories

OS Version Number Repository Name Format URL

RedHat 7

CentOS 7

Oracle Linux 7

HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.0.0
Repo File http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.0.0/hdp.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.0.0/HDP-3.1.0.0-centos7-rpm.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.1.0.0/hdp.gpl.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-centos7-gpl.tar.gz

amazonlinux2

HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/amazonlinux2/3.x/updates/3.1.0.0/HDP-3.1.0.0-1634.xml
Base URL http://public-repo-1.hortonworks.com/HDP/amazonlinux2/3.x/updates/3.1.0.0
Repo File http://public-repo-1.hortonworks.com/HDP/amazonlinux2/3.x/updates/3.1.0.0/hdp.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/amazonlinux2/3.x/updates/3.1.0.0/HDP-3.1.0.0-amazonlinux2-rpm.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/amazonlinux2
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/amazonlinux2/HDP-UTILS-1.1.0.22-amazonlinux2.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/amazonlinux2/3.x/updates/3.1.0.0/hdp.gpl.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/amazonlinux2/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-amazonlinux2-gpl.tar.gz
SLES 12 HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/sles12/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/sles12/3.x/updates/3.1.0.0/
Repo File http://public-repo-1.hortonworks.com/HDP/sles12/3.x/updates/3.1.0.0/hdp.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/sles12/3.x/updates/3.1.0.0/HDP-3.1.0.0-sles12-rpm.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/sles12
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/sles12/HDP-UTILS-1.1.0.22-sles12.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/sles12/3.x/updates/3.1.0.0/hdp.gpl.repo
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/sles12/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-sles12-gpl.tar.gz
Ubuntu 14 HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/ubuntu14/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/ubuntu14/3.x/updates/3.1.0.0/
Repo File http://public-repo-1.hortonworks.com/HDP/ubuntu14/3.x/updates/3.1.0.0/hdp.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/ubuntu14/3.x/updates/3.1.0.0/HDP-3.1.0.0-ubuntu14-deb.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu14
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu14/HDP-UTILS-1.1.0.22-ubuntu14.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu14/3.x/updates/3.1.0.0/hdp.gpl.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu14/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-ubuntu14-gpl.tar.gz
Ubuntu 16 HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/ubuntu16/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/ubuntu16/3.x/updates/3.1.0.0/
Repo File http://public-repo-1.hortonworks.com/HDP/ubuntu16/3.x/updates/3.1.0.0/hdp.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/ubuntu16/3.x/updates/3.1.0.0/HDP-3.1.0.0-ubuntu16-deb.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu16
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu16/HDP-UTILS-1.1.0.22-ubuntu16.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu16/3.x/updates/3.1.0.0/hdp.gpl.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu16/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-ubuntu16-gpl.tar.gz
Ubuntu 18 HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/ubuntu18/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/ubuntu18/3.x/updates/3.1.0.0/
Repo File http://public-repo-1.hortonworks.com/HDP/ubuntu18/3.x/updates/3.1.0.0/hdp.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/ubuntu18/3.x/updates/3.1.0.0/HDP-3.1.0.0-ubuntu18-deb.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu18
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu18/HDP-UTILS-1.1.0.22-ubuntu18.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu18/3.x/updates/3.1.0.0/hdp.gpl.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/ubuntu18/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-ubuntu18-gpl.tar.gz
Debian9 HDP-3.1.0.0 HDP Version Definition File (VDF) http://public-repo-1.hortonworks.com/HDP/debian9/3.x/updates/3.1.0.0/HDP-3.1.0.0-78.xml
Base URL http://public-repo-1.hortonworks.com/HDP/debian9/3.x/updates/3.1.0.0/
Repo File http://public-repo-1.hortonworks.com/HDP/debian9/3.x/updates/3.1.0.0/hdp.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP/debian9/3.x/updates/3.1.0.0/HDP-3.1.0.0-debian9-deb.tar.gz
HDP-UTILS Base URL http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/debian9
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/debian9/HDP-UTILS-1.1.0.22-debian9.tar.gz
HDP-GPL URL http://public-repo-1.hortonworks.com/HDP-GPL/debian9/3.x/updates/3.1.0.0/hdp.gpl.list
Tarball md5 | asc http://public-repo-1.hortonworks.com/HDP-GPL/debian9/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-debian9-gpl.tar.gz

어떻게 하다보니, 당분간은 (노트북이 여러대 있긴 하지만 ... 집에 있는 책상이 작은관계로) 우분투 노트북을 메인으로 사용하고 있습니다.

 

(은행이나, 기타 필요한 작업은 그때그때 윈도우 노트북으로 바꿔서)

 

리눅스 데스크탑 버전을 정말 오랜만에 써본것 같습니다. 예전에 ibus였나 한글 자모음 깨지는 문제도 있어서 nabi를 깔아 썻던 기억도 나는데, 이제는 한/영키를 바로 잡아주네요

 

프린터도 자동으로 잡아주는것 같고, 그런데 모니터로 hdmi를 연결하니 소리를 못잡네요

 

답은 간단합니다 . 

 

sudo apt-get install pavucontrol

pavucontrol

 

바로 hdmi  스피커로 소리가 나오네요 


SpringBoot 로 Phoenix를 이용해서 HBASE로 Query를 날렸는데 다음과 같은 Exception을 발견하였습니다.



org.apache.phoenix.exception.PhoenixIOException: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user jdbc



이 문제는 JDBC 연결상의 문제라기 보다는, Spark로 Phoenix 사용하는 코드에도 동일하게 적용될수 있는 사항입니다


만약 HDP 계열을 사용하시다면, CDH, MapR도 비슷할것 같은데, 


현재 제 환경은 HDP 이기 떄문에


Ranger에서 HBASE에 테이블 접근권한을 주시면 됩니다. 

Spark로 개발하는 방법에는 여러가지가 있지만, 일단은 PySpark를 사용하고 있습니다 


다른 이유보다 너무 쉽게 됩니다.


현재 개발환경은, 개발서버에 Pycham 이 Direct로 붙는다는 환경이고 방화벽등의 환경에서는 달라질수 있습니다 


먼저 제 환경은 다음과 같습니다


개발툴 : Pycham Professional 

  - 서버의 파이썬 리모트 인터프리터 사용 

  - 시스템 기본 파이썬 인터프리터 사용


플랫폼 : HDP(Hortonworks Data Platform) 3.0.1




import os
import sys

os.environ['SPARK_HOME'] = "/usr/hdp/3.0.1.0-187/spark2"
os.environ['HIVE_HOME'] = "/usr/hdp/3.0.1.0-187/hive"
os.environ["HADOOP_USER_NAME"] = "spark"
os.environ['PYSPARK_SUBMIT_ARGS'] = '--master yarn --deploy-mode client ' \
'--num-executors 11 --executor-memory 19G --executor-cores 5 ' \
'--driver-memory 1G pyspark-shell'
sys.path.append("/usr/hdp/3.0.1.0-187/spark2/python")

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

spark = SparkSession.builder.appName("pySpark1_redeyesofangel").getOrCreate()
spark.sql("select current_timestamp() ").show()
spark.stop()





소스는 매우 간단합니다. 해당코드는 Yarn client 모드로 동작하게 됩니다.  execturor 및 core는 각 클러스터 성능에 따라 맞춰주시면 됩니다.

 

기본적으로 서버에서 제공하는 파이썬 인터프리터를 사용할때(본예제에서는 우분투 16.04의 Python 2.7 사용중) pip install py4j 는 설치먼저 하셔야 합니다. 


단순히 해당 코드는 현재시간을 보여주는 코드입니다. Pycham에서 바로 run을 하면 다음과 같은 결과를 볼수 있습니다 




ssh://dev@192.168.0.140:22/usr/bin/python -u /tmp/pycharm_project_484/pySpark_1.py

Setting default log level to "WARN".

To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).

+--------------------+

| current_timestamp()|

+--------------------+

|2018-11-29 17:27:...|

+--------------------+



Process finished with exit code 0






다음에는 틈틈히 HIVE 연결, 데이터프레임 사용등등 올려보도록 하겠습니다 





일단, 하는중 일부는 Spark 로 처리한 데이터를 Hive에 테이블을 넣는게 있습니다.


사실 이때는 몰랐는데,


Spark 로 Hive 테이블을 읽으려는데 빈값이 나오더군요 .


사실 Spark 2.3? 인가 바뀌면서 enableHivesupport 인가 이옵션만 활성화 시키면 되서 , 뭐 다른문제인가 했는데,


사실 약간 조건적 상황인것 같은데, 현재 방법에서는 읽을 방법이 없는것 같습니다


HDP 3가 되면서 Hive에 기본적으로 테이블을 생성하면(Spark 로 생성하는게 아닌 Hive에서 직접) ACID가 적용이 되는데, 현재는 Spark 에서 접근할 방법이 없는것 같습니다.


물론, 강제적으로 alter table 해서 해결하면될것 같은 글들이 보이긴 하는데,



https://community.hortonworks.com/questions/170146/spark-not-reading-data-from-a-hive-managed-table-m.html


Spark not reading data from a Hive managed table. Meanwhile, Hive can query the data in the table just fine.

  1. // This query:
  2. sqlContext.sql("select * from retail_invoice").show
  3.  
  4. // gives this output:
  5.  
  6.  
  7. +---------+---------+-----------+--------+-----------+---------+----------+-------+
  8.  
  9.  
  10. |invoiceno|stockcode|description|quantity|invoicedate|unitprice|customerid|country|
  11.  
  12.  
  13. +---------+---------+-----------+--------+-----------+---------+----------+-------+
  14.  
  15.  
  16. +---------+---------+-----------+--------+-----------+---------+----------+-------+
  17.  
  18. // The Hive DDL for the table in HiveView 2.0:
  19. CREATE TABLE `retail_invoice`(
  20. `invoiceno` string,
  21. `stockcode` string,
  22. `description` string,
  23. `quantity` int,
  24. `invoicedate` string,
  25. `unitprice` double,
  26. `customerid` string,
  27. `country` string)
  28. CLUSTERED BY (
  29. stockcode)
  30. INTO 2 BUCKETS
  31. ROW FORMAT SERDE
  32. 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
  33. STORED AS INPUTFORMAT
  34. 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
  35. OUTPUTFORMAT
  36. 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
  37. LOCATION
  38. 'hdfs://hadoopsilon2.zdwinsqlad.local:8020/apps/hive/warehouse/retail_invoice'
  39. TBLPROPERTIES (
  40. 'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"country\":\"true\",\"quantity\":\"true\",\"customerid\":\"true\",\"description\":\"true\",\"invoiceno\":\"true\",\"unitprice\":\"true\",\"invoicedate\":\"true\",\"stockcode\":\"true\"}}',
  41. 'numFiles'='2',
  42. 'numRows'='541909',
  43. 'orc.bloom.filter.columns'='StockCode, InvoiceDate, Country',
  44. 'rawDataSize'='333815944',
  45. 'totalSize'='5642889',
  46. 'transactional'='true',
  47. 'transient_lastDdlTime'='1517516006')

I can query the data in Hive just fine. The data is inserted from Nifi using the PutHiveStreaming processor.

We have tried to recreate the table, but the same problem arises. I haven't found any odd looking configurations.

Any Ideas on what could be going on here?

 0
avatar image

Answer by Sivaprasanna 

@Matt Krueger

Your table is ACID i.e. transaction enabled. Spark doesn't support reading Hive ACID table. Take a look at SPARK-15348 and SPARK-16996


물론 방법이 없는것은 아닙니다. 아예 하이브를 이용하지 않고, Spark에서 하이브 테이블을 만들어서 사용하면 될것 같긴한데 아직 여러가지 방법은 시도해보지는 않았습니다.(일단 필요한 기능들은 다 되기 때문에)



확실히 HDP3 올라오면서 falcon 같은건 data plan platform 인가로 분리했고, 잘쓰던 Hive View 같은거는 Superset 이나, Tez View 같은경우는 다른 분슨 분석 플랫폼인가 분리한것 같습니다. 뭐 결론은 ambari extension으로 만든것 같은데,


뭐 일단은 쓰는게 HDP 다보니, .. 하 KUDA 하고 Impala가 그렇게 좋다는데 언제 써볼수 있을려나..







분명히 HDP3 에서 ranger에 제대로 설정되어 있는데


zepplin 이나 spark 에서 하이브 테이블이 안보입니다.


분명히 2.6때는 보였는데, 


HDP 3 되면서 정말 불친절해진 모양이네요 

  1. cp /etc/hive/conf/hive-site.xml /etc/spark2/conf

답은 매우 간단합니다. 클라이언트 노드에서 spark2 에 hive-site를 옮기시면 됩니다...

HDP3 되면서 자동으로 다 설정해주던건데

이제 다 수동으로 바뀐 모양인네요



https://community.hortonworks.com/questions/221974/zeppelin-not-showing-hive-databasetables-in-hdp30.html


Zeppelin : Not able to connect Hive Databases (through spark2) HDP3.0

I have installed Hortonworks hdp3.0 and configured Zeppelin as well.

When I running spark or sql Zeppelin only showing me default database(This is the default database from Spark which has location as '/apps/spark/warehouse', not the default database of Hive). This is probably because hive.metastore.warehouse.dir property is not set from hive-site.xml and zeppelin is picking this from Spark config (spark.sql.warehouse.dir).

I had similar issue with spark as well and it was due to hive-site.xml file on spark-conf dir, I was able to resolve this by copying hive-site.xml from hive-conf dir to spark-conf dir.

I did the same for Zeppelin as well, copied hive-site.xml in zeppelin dir(where it has zeppelin-site.xml and also copied in zeppelin-external-dependency-conf dir.

But this did not resolve the issue

*** Edit#1 - adding some additional information ***

I have create spark session by enabling hive support through enableHiveSupport(), and even tried setting spark.sql.warehouse.dir config property. but this did not help.

  1. import org.apache.spark.sql.SparkSession
  2.  
  3. val spark =SparkSession.builder.appName("Test Zeppelin").config("spark.sql.warehouse.dir","/apps/hive/db").enableHiveSupport().getOrCreate()

Through some online help, I am learnt that Zeppelin uses only Spark's hive-site.xml file, but I can view all hive databases through spark it's only in Zeppelin (through spark2) I am not able to access Hive databases.

Additionaly Zeppelin is not letting me choose programming language, it by default creates session with scala. I would prefer a Zeppeling session with pyspark.

Any help on this will be highly appreciated


Answer by Shantanu Sharma

After copying hive-site.xml from hive-conf dir to spark-conf dir, I restarted the spark services that reverted those changes, I copied hive-site.xml again and it's working now.


  1. Favicon of http://namioto.github.io BlogIcon namioto 2019.05.02 11:54

    안녕하세요. 근데 이렇게 하면 ambari에서 spark 재기동 시 설정을 덮어씌워버리지 않나요??

    • Favicon of https://redeyesofangel.tistory.com BlogIcon Yuika eizt 2019.05.06 17:57 신고

      정확히는, 저렇게 해버리면 spark trift server 였나 history server 였나. 이것이 재시작하다가 죽어버립니다.

      일단 몇가지 고민이 있는데, 저당시 저거 말고도 다른 문제가 ACID hive table을 spark에서 읽어오지 못하더라고요 (지금 드라이버가 새로 나온것 같습니다 )

      그래서 지금은 원래 설정대로 하고서, external table빼서 Spark에서 ORC 또는 Parquet를 직접처리하는 방법으로 변경하였습니다 .


몇일간 HDP3를 사용하면서 느낀건..꼭 HDP 2.1 때보던것 같은 엉성함이 느껴지네요


첫번째로

HIVE LLAP의 경우도 HDP 2.6에서는 바로 활성화 되었는데, HDP3의 경우 엄청 귀찮게 되어있음

(기억에 Yarn Queue 도 알아서 만들었던것 같은데)


다른것보다, Tez View도 없어지고 Hive View도 없어지고(호튼웍스 커뮤니티에서는 Superset을 쓰라고 하던ㄷ)

Oozzie-View도 이상해지고 default View 말고, HDP에서 예쁘게 보여줬던 어떤게 있었던것 같은데

(물론 쓰진 않았지만.)


Flume 도 없어지고(물론 nifi가 대치된다고 하지만,,, Folder spooling이 Nifi에 있나..? 아직 익숙치가 않아서)

사실, Workflow 엔진을 이미 쓰고 있다면(Azkaban 이나, 루이지나, Airflow 같이) 굳이 할필요없지만 


그리고, 

간혹 준비가 안되어서, cron으로 하기에는 애매한것들이 있음.

가장 쉬운 솔루션은 zepplin에서 하면되는데, HDP 3에서는 Zepplin의 Cron 기능이 Disable되어 있음

(호튼웍스 커뮤니티에는 cron이 시스템을 접근한다니 해서 oozie를 쓰라고 하는데)


이렇게 해결하면됩니다

Ambari를 통해 Zepplin 설정들어가서 custom zepplin-site에 

zeppelin.notebook.cron.enable 를 넣고 true 를 넣으면 zepllin cron 기능이 되살아 납니다 


https://zeppelin.apache.org/docs/0.8.0/usage/other_features/cron_scheduler.html 

Running a Notebook on a Given Schedule Automatically

Apache Zeppelin provides a cron scheduler for each notebook. You can run a notebook on a given schedule automatically by setting up a cron scheduler on the notebook.

Setting up a cron scheduler on a notebook

Click the clock icon on the tool bar and open a cron scheduler dialog box.

There are the following items which you can input or set:

Preset

You can set a cron schedule easily by clicking each option such as 1m and 5m. The login user is set as a cron executing user automatically. You can also clear the cron schedule settings by clicking None.

Cron expression

You can set the cron schedule by filling in this form. Please see Cron Trigger Tutorial for the available cron syntax.

Cron executing user (It is removed from 0.8 where it enforces the cron execution user to be the note owner for security purpose)

You can set the cron executing user by filling in this form and press the enter key.

After execution stop the interpreter

When this checkbox is set to "on", the interpreters which are binded to the notebook are stopped automatically after the cron execution. This feature is useful if you want to release the interpreter resources after the cron execution.

Note: A cron execution is skipped if one of the paragraphs is in a state of RUNNING or PENDING no matter whether it is executed automatically (i.e. by the cron scheduler) or manually by a user opening this notebook.

Enable cron

Set property zeppelin.notebook.cron.enable to true in $ZEPPELIN_HOME/conf/zeppelin-site.xml to enable Cron feature.

Run cron selectively on folders

In $ZEPPELIN_HOME/conf/zeppelin-site.xml make sure the property zeppelin.notebook.cron.enable is set to true, and then set property zeppelin.notebook.cron.folders to the desired folder as comma-separated values, e.g. *yst*, Sys?em, System. This property accepts wildcard and joker.



HDP3 되면서, 많은것이 바뀌었습니다


일단 눈에 띄는 변화는 Hadoop3 이 들어갔다는것과 제눈에 볼때 딱 달라진건 Falcon 이 없어진것


그리고 Flume 이 없어졌다는


https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.3/bk_release-notes/content/deprecated_items.html

Deprecated Components and Product Capabilities

The following components are marked deprecated from HDP and will be removed in a future HDP release:

Component or CapabilityStatusMarked Deprecated as ofTarget Release for RemovalComments
Apache FalconDeprecatedHDP 2.6.0HDP 3.0.0Contact your Hortonworks account team for the replacement options.
Apache FlumeDeprecatedHDP 2.6.0HDP 3.0.0Consider Hortonworks DataFlow as an alternative for Flume use cases.
Apache MahoutDeprecatedHDP 2.6.0HDP 3.0.0Consider Apache Spark as an alternative depending on the workload.
Apache SliderDeprecatedHDP 2.6.0HDP 3.0.0Apache Slider functionality will be absorbed by Apache YARN.
CascadingDeprecatedHDP 2.6.0HDP 3.0.0 
HueDeprecatedHDP 2.6.0HDP 3.0.0Consider Ambari Views as the alternative.


저기서 Flume 이 없어졌는데 HDP3 되면서 싹 없애버렸네요.

사실 Nifi 가 나오면서 그 자리를 Nifi가 대체해버린다고 했는데, 정작 Nifi 는 보이질 않습니다 (HDP 내에서)


엄밀히 말하면, nifi는 HDF(Hortonworks Data Flow)라는 새로운 플랫폼으로 제공이 되고 있습니다.(물론 호튼웍스에서 제공하는 RPM으로 깔아도 됩니다.)


하지만 NIFI를 쓰고 싶은데, 굳이 Ambari에서 관리하고 싶으니 .. 


HDF를 설치하면 똑같이 Ambari에 Storm, Nifi가 들어간 플랫폼이 설치가 됩니다. 하지만 원하는건 HDP에 그대로 설치하는것이니 


물론 Hortonworks 에서 관련옵션을 제공합니다 


https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.2.0/planning-your-deployment/content/deployment_scenarios.html

ScenarioInstallation ScenarioSteps

Installing an HDF Cluster

This scenario applies if you want to install the entire HDF platform, consisting of all flow management and stream processing components on a new cluster.

The stream processing components include the new Streaming Analytics Manager (SAM) modules that are in GA (General Availability). This includes the SAM Stream Builder and Stream Operations modules but does not include installing the technical preview version of SAM Stream Insight, which is powered by Druid and Superset.

This scenario requires that you install an HDF cluster.

  1. Install Ambari.
  2. Install databases.
  3. Install the HDF management pack.
  4. Install an HDF cluster using Ambari.

Installing HDF Services on a New HDP Cluster

This scenario applies to you if you are both an Hortonworks Data Platform (HDP) and HDF customer and you want to install a fresh cluster of HDP and add HDF services.

The stream processing components include the new (SAM) and all of its modules. This includes installing the technical preview version of the SAM Stream Insight module, which is powered by Druid and Apache Superset.

This scenario requires that you install both an HDF cluster and an HDP cluster.

  1. Install Ambari.
  2. Install databases.
  3. Install an HDP cluster using Ambari.
  4. Install the HDF management pack.
  5. Update the HDF base URL.
  6. Add HDF services to an HDP cluster

Installing HDF Services on an Existing HDP Cluster

You have an existing HDP cluster with Apache Storm and or Apache Kafka services and want to install Apache NiFi or NiFi Registry modules on that cluster.

This requires that you upgrade to the latest version of Apache Ambari and HDP, and then use Ambari to add HDF services to the upgraded HDP cluster.

  1. Upgrade Ambari
  2. Upgrade HDP
  3. Install Databases
  4. Install HDF Management Pack
  5. Update HDF Base URL
  6. Add HDF Services to HDP cluster

Installing HDF Services on an Existing HDP Cluster


아마, 많은 경우는 기존에 HDP에 HDF올리는 방법이 생각됩니다.

1. upgrade Ambari -- 최신버전 Ambari로 업그레이드 하라는 내용입니다

2. Upgrade HDP -- 이건 HDP 2.6 쓰면 3버전으로 올리나는 내용입니다 --> 이미 HDP3 이니 패스 

3. HDF에서 사용할 메타 DB에 내용을 추가하라는 내용입니다. 선택지는 oracle,postgres,mysql 이 있지만 일단 저는 postgres


https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.2.0/installing-hdf-and-hdp/content/installing_databases.html


해당 페이지에 있는 내용 그대로 postgres에 쿼리 몇줄만 쓰면됩니다. 거의다 create database, table 이런거라 기존 ambari가 사용하는 테이블은 안건드리니 하셔도 될것 같습니다 



아마 이부분은 확인은 안해봤는데, ambari 깔릴때 사용하는 postgres를 하면 이미 되어있거나 그럴것 같네요
  1. Log in to Postgres:
    sudo su postgres
    psql
  2. Create a database called registry with the password registry:
    create database registry;
    CREATE USER registry WITH PASSWORD 'registry';
    GRANT ALL PRIVILEGES ON DATABASE "registry" to registry;
  3. Create a database called streamline with the password streamline:
    create database streamline;
    CREATE USER streamline WITH PASSWORD 'streamline';
    GRANT ALL PRIVILEGES ON DATABASE "streamline" to streamline;

  1. Log in to Postgres:
    sudo su postgres
    psql
  2. Create a database, user, and password, each called druid, and assign database privileges to the user druid:
    create database druid;
    CREATE USER druid WITH PASSWORD 'druid';
    GRANT ALL PRIVILEGES ON DATABASE  "druid" to druid;
  3. Create a database, user, and password, each called superset, and assign database privileges to the user superset:
    create database superset;
    CREATE USER superset WITH PASSWORD 'superset';
    GRANT ALL PRIVILEGES ON DATABASE "superset" to superset;Install HDF Management Pack



4. Install HDF Management Pack

Ambari 에 HDF 스택을 추가하는것입니다 



  1. Download the Hortonworks HDF management pack. You can find the download location for your operating system in the HDF Release Notes.
  2. Copy the bundle to /tmp on the node where you installed Ambari.
  3. Install the management pack:
    ambari-server install-mpack \
    --mpack=/tmp/hdf-ambari-mpack-<version>.tar.gz \
    --verbose
  4. Restart the Ambari server:
    ambari-server restart


https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.1.2/bk_release-notes/content/ch_hdf_relnotes.html#repo-location


릴리즈 노트를 보시면 해당파일을 구하실수 있습니다 


Table 1.5. RHEL/Oracle Linux/CentOS 6 HDF repository & additional download locations

OSFormatDownload location
RHEL/Oracle Linux/CentOS 6 (64-bit):HDF Build number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0
HDF Repohttp://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0/hdf.repo
RPM tarballhttp://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0/HDF-3.1.2.0-centos6-rpm.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0/HDF-3.1.2.0-centos6-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
MiNiFi C++http://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.1.2.0/tars/nifi-minifi-cpp/nifi-minifi-cpp-0.4.0-bin.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.6.2.0/ambari.repo
HDPhttp://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.6.5.0/hdp.repo
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.6. RHEL/Oracle Linux/CentOS 7 HDF repository & additional download locations

OSFormatDownload location
RHEL/Oracle Linux/CentOS 7 (64-bit):HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0
HDF Repohttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0/hdf.repo
RPM tarballhttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0/HDF-3.1.2.0-centos7-rpm.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0/HDF-3.1.2.0-centos7-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
MiNiFi C++ Agenthttp://public-repo-1.hortonworks.com/HDF/centos7/3.x/updates/3.1.2.0/tars/nifi-minifi-cpp/nifi-minifi-cpp-0.4.0-bin.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.2.0/ambari.repo
HDPhttp://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.5.0/hdp.repo
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.7. SLES 11 SP3/SP4 HDF repository & additional download locations

OSFormatDownload location
SUSE Enterprise Linux 11 SP3, SP4HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/suse11sp3/3.x/updates/3.1.2.0
Repohttp://public-repo-1.hortonworks.com/HDF/suse11sp3/3.x/updates/3.1.2.0/hdf.repo
RPM tarballhttp://public-repo-1.hortonworks.com/HDF/suse11sp3/3.x/updates/3.1.2.0/HDF-3.1.2.0-suse11sp3-rpm.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/suse11sp3/3.x/updates/3.1.2.0/HDF-3.1.2.0-suse11sp3-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/suse11sp3/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/suse11/2.x/updates/2.6.2.0/ambari.repo
HDPhttp://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.6.5.0/hdp.repo
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/suse11sp3
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.8. SLES 12 HDF repository & additional download locations

OSFormatDownload location
SUSE Linux Enterprise Server (SLES) v12 SP1HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/sles12/3.x/updates/3.1.2.0
Repohttp://public-repo-1.hortonworks.com/HDF/sles12/3.x/updates/3.1.2.0/hdf.repo
RPM tarballhttp://public-repo-1.hortonworks.com/HDF/sles12/3.x/updates/3.1.2.0/HDF-3.1.2.0-sles12-rpm.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/sles12/3.x/updates/3.1.2.0/HDF-3.1.2.0-sles12-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/sles12/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/sles12/2.x/updates/2.6.2.0/ambari.repo
HDPhttp://public-repo-1.hortonworks.com/HDP/sles12/2.x/updates/2.6.5.0/hdp.repo
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/sles12
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.9. Ubuntu 14 HDF repository & additional download locations

OSFormatDownload location
Ubuntu Trusty (14.04) (64-bit)HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/ubuntu14/3.x/updates/3.1.2.0
Repohttp://public-repo-1.hortonworks.com/HDF/ubuntu14/3.x/updates/3.1.2.0/hdf.list
Deb tarballhttp://public-repo-1.hortonworks.com/HDF/ubuntu14/3.x/updates/3.1.2.0/HDF-3.1.2.0-ubuntu14-deb.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/ubuntu14/3.x/updates/3.1.2.0/HDF-3.1.2.0-ubuntu14-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/ubuntu14/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.6.2.0/ambari.list
HDPhttp://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.6.5.0/hdp.list
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu14
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.10. Ubuntu 16 HDF repository & additional download locations

OSFormatDownload location
Ubuntu Trusty 16 (64-bit)HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0
Repohttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0/hdf.list
Deb tarballhttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0/HDF-3.1.2.0-ubuntu16-deb.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0/HDF-3.1.2.0-ubuntu16-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
MiNiFi C++ Agenthttp://public-repo-1.hortonworks.com/HDF/ubuntu16/3.x/updates/3.1.2.0/tars/nifi-minifi-cpp/nifi-minifi-cpp-0.4.0-bin.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.6.2.0/ambari.list
HDPhttp://public-repo-1.hortonworks.com/HDP/ubuntu16/2.x/updates/2.6.5.0/hdp.list
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/ubuntu16
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


Table 1.11. Debian 7 HDF repository & additional download locations

OSFormatDownload location
Debian 7HDF Build Number3.1.2.0-7
HDF Base URLhttp://public-repo-1.hortonworks.com/HDF/debian7/3.x/updates/3.1.2.0
Repohttp://public-repo-1.hortonworks.com/HDF/debian7/3.x/updates/3.1.2.0/hdf.list
Deb tarballhttp://public-repo-1.hortonworks.com/HDF/debian7/3.x/updates/3.1.2.0/HDF-3.1.2.0-debian7-deb.tar.gz
Tars tarballhttp://public-repo-1.hortonworks.com/HDF/debian7/3.x/updates/3.1.2.0/HDF-3.1.2.0-debian7-tars-tarball.tar.gz
HDF Management Packhttp://public-repo-1.hortonworks.com/HDF/debian7/3.x/updates/3.1.2.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.1.2.0-7.tar.gz
HDP and Ambari Repositories
Ambarihttp://public-repo-1.hortonworks.com/ambari/debian7/2.x/updates/2.6.2.0/ambari.list
HDPhttp://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.6.5.0/hdp.list
HDP-UTILS Base URLhttp://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/debian7
OS Agnostic Downloads
NiFi only
NiFi Toolkit
Docker Hub

https://hub.docker.com/r/hortonworks/nifi/

Tags are latest and 3.1.2.0

NiFi Registry
MiNiFi Java Agent
MiNiFi Toolkit
iOS/Android Libraries


이렇게 하시고 ambari를 재시작하시면 HDF가 추가되어 있습니다 



Falcon 도 HDP3 되면서 없어지면


https://hortonworks.com/products/data-services/


DataPlane Service로 플랫폼 DPS?가 된것 같더군요. 아마도 이것도 이런식으로 추가해서 사용하면 되지 않을까.. 버전이 바뀔때마다 휙휙 바뀌니 손에 익어서 HDP는 계속 사용하고 있지만..




Zepplin 만 쓰다가, Intellj + SBT + Scala 조합으로 Spark 프로그램을 만들다 보니, 

열받는게, Zepplin 의 경우 중간중간 쉽게 중간 값을 볼수 있었는데, 일반적인 개발방법은 엄청 불편하다고 생각했는데,


아니나 다를까, Spark 원격 디버깅 하는 방법이 존재


1. sbt assembly 해서 Spark 패키지 만들고

2. 파일을 서버에 업로드(Sbt에 Deploy 플러그인 있는데, 이런걸 이용하면 편할듯) 

   -- 이런것이 없으면 디버깅 할때마다 이짓을 해야됨


3. Spark Client (실행노드)에서 다음을 입력

  - 물론, 생각에 따라서는 Bashrc에 넣어도 상관없을듯


export SPARK_SUBMIT_OPTS= agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=4000


4. spark-submit 


5. Intellj Debug 모드 시작


저 명령어가 나온상태에서 intellj 에서 Debug 모드를 키면 정의한 SparkJob이 yarn-client 모드로 배포되고 


브레이크 포인트를 지정한 해당 부분에 걸림 




이렇게 하면 흔히, 호튼웍스나 스파크싸이트에서 말하는 원격 디버깅을 할수 있는데, 

문제는 할때마다 assembly해서 배포해야함

아무래도 이부분은 sbt plugin을 이용해서 자동배포하면 편할것 같은.. 




스파크 스트리밍 코드를 묶다가 예전에 있던 코드를 활용했더니 ... 


[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

[warn]  ::          UNRESOLVED DEPENDENCIES         ::

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

[warn]  :: com.eed3si9n#sbt-assembly;0.11.2: not found

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

[warn]

[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.

[warn]          com.eed3si9n:sbt-assembly:0.11.2 (scalaVersion=2.12, sbtVersion=1.0)

[warn]


해결방법


https://github.com/sbt/sbt-assembly


확인해서 버전을 맞춰야함 


Setup

Using Published Plugin

For sbt 0.13.6+ and sbt 1.0.0-M6, add sbt-assembly as a dependency in project/assembly.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")

For older sbt 0.13.x, see sbt-assembly 0.11.2.

For sbt 0.12, see sbt-assembly 0.9.2.

(You may need to check this project's tags to see what the most recent release is.)



해당 오류는 Mysql-connector-java 가 5.1.22 버전보다 낮아서 생기는 문제입니다


만약 클러스터에서 해당 오류가 spark,hive등에서 발생하고 있다면, jdbc를 변경해주시면 됩니다 



https://community.hortonworks.com/articles/70912/hive-metastore-not-working-syntax-error-option-sql.html



저 같은경우는


1.jdbc를 받은다음


1.ambari-server resources 패치 

/var/lib/ambari-server/resource 내의 mysql-connector-java


그리고 각 클라이언트 또는 hive 가 깔린 /usr/hdp/버전/hive/lib 내의 mysql-connetor-java를 해당 버전으로 바꾼뒤 서비스를 다시 시작하였습니다





[INFO] Scanning for projects...

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Build Order:

[INFO]

[INFO] ODL :: integration :: distribution-artifacts

[INFO] ODL :: integration :: properties

[INFO] ODL :: integration :: artifact-artifacts

[INFO] ODL :: integration :: feature-repo-artifacts

[INFO] ODL :: integration :: single-feature-artifacts

[INFO] ODL :: integration :: other-artifacts

[INFO] ODL :: integration :: upstream-all-artifacts

[INFO] ODL :: integration :: upstream-aggregator

[INFO] ODL :: integration :: all-artifacts

[INFO] ODL :: integration :: artifacts-aggregator

[INFO] ODL :: integration :: features-index

[INFO] ODL :: integration :: odl-integration-compatible-with-all

[INFO] ODL :: integration :: odl-integration-all

[INFO] ODL :: integration :: features-test

[INFO] ODL :: integration :: karaf

[INFO] ODL :: integration :: singles-aggregator

[INFO] ODL :: integration :: repos-aggregator

[INFO] ODL :: integration :: features-aggregator

[INFO] Integration/Distribution

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building ODL :: integration :: distribution-artifacts 0.9.0-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ distribution-artifacts ---

[INFO]

[INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (enforce-maven) @ distribution-artifacts ---

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireMavenVersion failed with message:

Detected Maven Version: 3.3.3 is not in the allowed range [3.3.9,).

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary:

[INFO]

[INFO] ODL :: integration :: distribution-artifacts ....... FAILURE [  0.341 s]

[INFO] ODL :: integration :: properties ................... SKIPPED

[INFO] ODL :: integration :: artifact-artifacts ........... SKIPPED

[INFO] ODL :: integration :: feature-repo-artifacts ....... SKIPPED

[INFO] ODL :: integration :: single-feature-artifacts ..... SKIPPED

[INFO] ODL :: integration :: other-artifacts .............. SKIPPED

[INFO] ODL :: integration :: upstream-all-artifacts ....... SKIPPED

[INFO] ODL :: integration :: upstream-aggregator .......... SKIPPED

[INFO] ODL :: integration :: all-artifacts ................ SKIPPED

[INFO] ODL :: integration :: artifacts-aggregator ......... SKIPPED

[INFO] ODL :: integration :: features-index ............... SKIPPED

[INFO] ODL :: integration :: odl-integration-compatible-with-all SKIPPED

[INFO] ODL :: integration :: odl-integration-all .......... SKIPPED

[INFO] ODL :: integration :: features-test ................ SKIPPED

[INFO] ODL :: integration :: karaf ........................ SKIPPED

[INFO] ODL :: integration :: singles-aggregator ........... SKIPPED

[INFO] ODL :: integration :: repos-aggregator ............. SKIPPED

[INFO] ODL :: integration :: features-aggregator .......... SKIPPED

[INFO] Integration/Distribution ........................... SKIPPED

[INFO] ------------------------------------------------------------------------

[INFO] BUILD FAILURE

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 3.551 s

[INFO] Finished at: 2018-06-11T11:25:04+09:00

[INFO] Final Memory: 39M/247M

[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1:enforce (enforce-maven) on project distribution-artifacts: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [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] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1:enforce (enforce-maven) on project distribution-artifacts: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1] 


에 대한 결론, 역시 오픈소스를 build 할때는 해당 문서를 꼼꼼히 읽어봐야하는것이 정답인듯.. 해당 오류는 maven 버전이 낮아서 생기는 문제 (OpenDaylight maven 최소버전을 3.3.9를 사용하라고 되어있는데, 너무 낮은 버전을 써서 생기는 문제였음)




파이썬이 편하긴 하지만, 인터프리터 특성이여서인지 배포할때 매우 불편합니다

(물론 도커 자체로 이미지를 떠버려서 옮겨도 되지만, 만약 이렇게 하지 못할경우)


예를들면 Java의 경우는 jar나 War로 말아서 올려버리는데, 파이썬은 그렇게 하지 못하는게 문제입니다


더군다나, 서버환경이 python 2.6 (centos6 기준) 멍청한 환경을 만나버리면 다행이도 pyenv(https://github.com/pyenv/pyenv) 에서 오프라인으로 인스톨 할수 있는 방법을 제공합니다.


하지만, 잘 안보이는것 같아서 블로그에 정리해봅니다. (저 같은경우 이 방법으로 패키지와 스크립트로 만들어서 배포가 되게 만든) 다음 설명은 Python 2.7.14(3버전도 아니고 2.6환경에서 2.7.14 환경을 구성하는것을 목표로 합니다)


1.

먼저 파이썬을 컴파일해서 깔던, pyenv 를 하던 컴파일을 하는 절차를 가지게 됩니다. centos 기준으로 다음 패키지들이 yum 으로 설치되어 있는지 확인합니다

yum groupinstall "Development Tools"
yum install openssl-devel bzip2-devel readline-devel sqlite-devel


2. pyenv-installer, pyenv-package.tar.gz 준비 


git clone https://github.com/pyenv/pyenv-installer

#bin 폴더 안에보면 download-pyenv-package.sh, pyenv-installer,pyenv-offline-installer 가 있습니다


여기서 ./donwnload-pyenv-pakcage.sh를 실행해서  pyenv-package.tar.gz


그러면 bin 폴더안에 download-pyenv-package.sh, pyenv-installer,pyenv-offline-installer, pyenv-package.tar.gz 총 4개의 폴더가 생성이 됩니다.

3. 원하는 Python 버전 준비 


https://www.python.org/downloads/ 에서 필요한 파이선 소스코드를 다운받습니다 (Python-2.7.14.tar.xz)


4. 오프라인, 폐쇠망 환경



1.pyenv 설치

2번에서 받은 파일을 압축해서 오프라인 또는 폐쇄망 환경으로 복사합니다


그리고 ./pyenv-offline-installer를 설치하면 $HOME/.pyenv 에 폴더가 생성이 됩니다.

그다음 쉘에 다음을 입력하면 쉘상에서 pyenv 환경을 사용하실수 있습니다

echo 'export PATH="'$HOME'/.pyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
2. ~/.pyenv/sources/원하는 버전 폴더 생성
mkdir ~/.pyenv/sources/2.7.14 -p

3.파이썬 ~/.pyenv/sources/2.7.14 (원하는 버전으로 복사)


4.pyenv install -k -v 2.7.14


다음과 같이 명령을 하면 pyenv에 2.7.14가 컴파일되어 설치됩니다.


이번 포스트는 오프라인 또는 폐쇄망 환경에서 pyenv 를 설치하는 방법을 설명하였습니다. 

다음장에서는 virtualenv 와 autoenv를 설정하는것을 포스팅 하겠습니다 

  1. Favicon of https://wooyoung85.tistory.com BlogIcon 문타리 2018.12.07 12:57 신고

    좋은 정보 감사합니다. 많은 도움이 되었습니다~!!

Cassandra 테이블을 스파크 데이터와 join 하고 싶을때 


https://github.com/datastax/spark-cassandra-connector/blob/master/doc/14_data_frames.md


datastax , 쉽게 생각하면 카산드라 벤더에서 만든 스파크 드라이버를 이용 


val createDDL = """CREATE TEMPORARY VIEW/TABLE words USING org.apache.spark.sql.cassandra OPTIONS ( table "words", keyspace "test", cluster "Test Cluster", pushdown "true")""" spark.sql(createDDL) // Creates Catalog Entry registering an existing Cassandra Table

View 또는 TABLE로 맵핑해서 SparkSQL로 사용




2017/07/11 - [Hadoop & Bigdata/HDP(Hortonworks Data Platform)] - HDFS 노드 추가 및 삭제


지난글에 이어서, 생각해보니까 노드 새로고침할때 active 노드에서 해야되나... 


nodemanager를 추가할때는, yarn.include 파일에 추가할 노드 추가


yarn rmadmin  -refreshNodes


반대로 제거할때는


yarn.exclude 에 넣고


yarn rmadmin  -refreshNodes



HDP에 익숙해져있다가 self-deployed Hadoop을 사용하다 보면, 답답할때가....


예를들면, HDFS를 확장하는것조차 마우스 클릭 딸각한번으로 해결될 문제가.


메뉴얼로 정리해보면


1.Hadoop.tar.gz 파일을 확장하려는 노드로 배포


데이터 노드에서


./hadoop-daemon.sh start datanode


2. 


네임 노드(HA했다면 둘다 설정 복사)에서


hdfs-site.xml에서 설정한 파일을 참고해서


    <property>

      <name>dfs.hosts</name>

      <value>/etc/hadoop/dfs.hosts</value>

    </property>


    <property>

      <name>dfs.hosts.exclude</name>

      <value>/etchadoop/dfs.exclude</value>

    </property>


dfs.hosts에 호스트 파일에 새로 추가한 데이터 노드 추가 



3. 


Acitve NameNode에서 


./refresh-namenodes.sh


노드 추가 끝


*

반대로 노드를 삭제할때는. 2번절차에서 수행한 dfs.hosts 데이터노드를 지우고 dfs.exclude


하고 Active NameNode에서 ./refresh-namenodes.sh 하면 제외하려는 데이터노드에 대해 decommision 절차가 수행된다음 제거


아파츠 재플린 , apache Zepplin아파츠 재플린 , apache Zepplin




몰랐는데, 재플린에서도 Code Assistant 기능이 있었네요..


사용법


sc를 치고  CTRL 키를 누른상태에서 . 을 누르면 어시스턴스 기능이 나옵니다. 


아파츠 재플린 , apache Zepplin아파츠 재플린 , apache Zepplin



하 이렇게 좋은걸 모르고 있었다니... 



최근 클러스터 환경을  HDP(Hortonworks Data Platform) 2.5.3.0 -> HDP 2.6.1.0으로 올리면서


Spark 환경을 1.6 -> 2.1 로 바꾸었습니다.



사실 스칼라도 해보겠다고 두꺼운 Programming in Scala 3판도 샀지만..... 이미 초심은..


그러던 도중 ... 


분명히 Zepplien 에서 1.6에서 Parquet 파일을 Table로 저장할때, 


sqlContext.parquetFile("/tmp/extracted").sveAsTable("step01");


로 했던것 같은데.. Spark를 2버전으로 바꾸니 saveAsTable is not a member of org.apache.spark.sql.DataFrame


다음과 같은 오류가 나네요 .. 아마 내부 API나 어떤 변경이 있겠지만.. 역시 구글신 


sqlContext.parquetFile("/tmp/extracted").write.format("parquet").saveAsTable("step01")


다음으로 변경하니 , 제대로 저장이 되네요.








Spark에서 paruqet 압축 알고리즘을 찾다가. 

분명히 두가지 방법중 한가지 방법이면 된다고 하는것 같은데


sqlContext.setConf("spark.sql.psqlContext.setConf("spark.sql.parquet.compression.codec", "snappy")
sqlContext.sql("SET spark.sql.parquet.compression.codec=snappy")


저는 이것이 동작하네요 
sqlContext.sql("SET spark.sql.parquet.compression.codec=snappy")

사용하는 화경은 HDP 2.5 Spark 1.6 입니다




Parquet + Spark 조합을 사용하고 있습니다


SparkSQL로 처리하기가 애매한 상황이라.  

직접 코딩좀 할일이 있어서 Scala를 만지는데 ...


1. sbt에 잘몰라서 설정하는데 고생

2. sbt와 스칼라버전과 build.sbt 의 %,%% 차이를 몰라서 고생

3. 책을 보고 있는데, 자바하고 문법이 비슷한것 같은데

   이제는 파이썬에 너무 익숙해져서 스칼라가 눈에 잘 안들어오는...



맨날 HDP 에 설치가 잘된 제플린을 사용하다보니,,

수동으로 제플린을 사용하려고 하니 HIVE를 사용하려고 하니 다음과 같은 오류가 발생합니다.

Prefix not found.

paragraph_1493986135331_752263516's Interpreter hive not found
org.apache.zeppelin.interpreter.InterpreterException: paragraph_1493986135331_752263516's Interpreter hive not found at org.apache.zeppelin.notebook.Note.run(Note.java:605) at org.apache.zeppelin.socket.NotebookServer.persistAndExecuteSingleParagraph(NotebookServer.java:1641) at org.apache.zeppelin.socket.NotebookServer.runAllParagraphs(NotebookServer.java:1588) at org.apache.zeppelin.socket.NotebookServer.onMessage(NotebookServer.java:268) at org.apache.zeppelin.socket.NotebookSocket.onWebSocketText(NotebookSocket.java:59) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:309) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745)


제가 사용한 제플린 버전은 1.7.1 버전이고 이유는 간단합니다.

HIVE 인터프리터가 없기 때문입니다.


설정방법은 여기 친절하게 나와있습니다.


https://zeppelin.apache.org/docs/0.7.1/interpreter/hive.html



설명은 간단하지만,, 분명히 HDP에서 제플린으로 HIVE사용할때는 %hive 사용했던것 같은데..


제플린을 오래 사용하지 않아서 jdbc로 통합된것 같더군요


먼저 Hadoop 홈폴더에 보면 share 폴더 아래 hadoop 아래 common이라는 폴더가 있을겁니다.

여기서 hadoop-common을 제플린 폴더의 interpreter 폴더 jdbc 폴더 안에 복사합니다


그다음 hive 홈폴더에서 lib 폴더에 보면 hive-jdbc-standalone이라는 jar 파일이 있습니다 

마찬가지로 제플린 interpreter 폴더 jdbc 에 복사합니다


그다음 제플린 UI에서 인터프리터를 여신다음 여기서 jdbc를 검색합니다

그다음 jdbc에 다음을 추가합니다

hive.driver   = org.apache.hive.jdbc.HiveDriver

hive.password = 자신의 설정

hive.url =자신의 설정

hive.user =자신의 설정


그다음 제플린 데몬을 제시작하면


%hive(jdbc) 하신다음 바로 사용이 가능합니다.





....추가적으로 지금 제플린에 yarn-client 모드로 spark 엮고 있는데, 이거 제대로 되면 방법도 올려보겠습니다.


맨날 벤더 하둡 쓰려다가 ㅠㅠㅠ self-deployed 하둡 쓰려니까 어렵네요 ㅠㅠ 
























twitter scrooge 를 


spark scala 코드를 만지고 있는데, 다음과 같은 오류가 발생한다면


build.sbt에 아래를 추가하시면 될것 같습니다.


resolvers ++= Seq(
"Twitter Maven Repo" at "http://maven.twttr.com"
)


잘은 모르겟지만 libthrift 저게 maven centeral repo에는 업다고 하네요 




HDP 만 사용하다가, 


HIVE를 직접 설치하려니..헷갈리네요


hive를 세팅하고 create table 하려고 하는데 metastore에 생성하려는 테이블이 trash 가 계속 된다면..


메타스토어 DB가 제대로 세팅안된것입니다..


... 분명히 예전에 mysql을 쓴다면,, 그 안에 들어가서 source 로 쿼리문으로 안에 테이블 구성했던것 같은데..


지금은 shematool 이라고 제공하네요..


혹시 create table 하는데 metasotre에서 만들려는 테이블을 trash로 지우는 현상이 일어나면서 테이블이 만들어지지 않는다면 metastore db 다시 한번 세팅해보세요 ~ 

Tomcat8 catalina MessageDispatch15Interceptor class not found


Tomcat 으로 클러스터링을 하는데, 왜인지 모르게 클러스터를 찾지 못하는 문제가 발생합니다 


제가 사용하는 버전은 8.5.12 버전입니다.


그런데 8.5.12 에서 8.0.42 버전으로 다운그레이드 하니 저런 문제는 없어졌네요 .


아마 버전업 하면서 클래스명이 바뀐것 같은데, 이것때문에 시간 엄청 썻네요 

사실, 언제부터인가 Python을 쓰다보니,,

그래도 가장 편했던 언어는 JAVA 언어였는데, 요즘 너무 어렵네요 


여러여러 관점에서 다른 원격지에서 생성되는(로그든 어떤거든) 데이터를 수집하기 위해서 API를 서버가 필요한 상황이였습니다(저 같은경우는 사용자 브라우저에서 생성된 로그 데이터의 경우 입니다.)


일단 제가 사용하는 조합은 


Python 2.7에서(Pyenv 로 3으로 올려서 사용했는데, 중간에 소스가 꼬여버리는 바람에) + Flask + Guicorn + Supervisor.d를 이렇게 사용하고 있습니다.


주변 케이스를 찾아보면 현 해당 케이스에서는  Node.js 를 기반으로 긍정적으로 평가하는것 같지만, 굳이 이걸 사용하는건 Python 이 편하기 때문에


먼저 SSL 키를 확보합니다.(확보되어 있다고 가정하고, 구입 또는 letsencrypt를 통해 무료로 발급받았다고 가정) 



먼저 필요한 패키지(?) 모듈들은 이거고 설치는 pip를 통해서 했습니다.

from flask import Flask, request, Response
from flask_cors import CORS, cross_origin
from OpenSSL import SSL


Flask 는 다음과 같이 사용합니다.

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})


여기서  CORS를 한이유는 , 저 같은경우 데이터가 브라우저들을 통해서 넘어오는 상황이여서 크로싱 브라우징 이슈를 해결하기 위해 사용하였습니다 


context = SSL.Context(SSL.SSLv3_METHOD)
cert = 'cert.pem'
pkey = 'privkey.pem'
context.use_privatekey_file(pkey)
context.use_certificate_file(cert)


그다음 HTTPS 사용하기 위해서 다음과 같이 하였습니다. 만약 이옵션을 제거하면 HTTP REST API 가 됩니다 


if __name__ == "__main__":
app.run(host='0.0.0.0', port='58080', ssl_context=(cert, pkey))

 

app.run 을 할때 ssl_context를 넣어주면 https로 작동하게 됩니다. 



@app.route("/", methods=['POST'])
@cross_origin()
def api(): data = str(request.get_data())

resp = Response(data)
resp.headers['Access-Control-Allow-Credentials'] = 'true'
return resp

request.get_data()와 같은 형태로 해당 api 주소의 /을 post로 넘겨온 데이터를 받습니다 이제 여기서 저 같은경우에 데이터를 좀더 수정하고 시간을 붙여서 다른 장소로 다시 넘깁니다


그리고 resp부분은 받은 내용에 대해서 그대로 다시 리턴합니다... 데이터를 보내오는 쪽에서 그렇게 해달라고 하더군요. 

사실 웹쪽을 잘모르는데, 제가 다시 보낸다고 해도, header를 저런식으로 안붙여주면 다른쪽에서 받지를 못하더군요.. 


사실 잡설이긴하지만,,, 저 같은 경우는 HDP 플랫폼으로 하둡 데이터를 처리하였는데, Cloudera CDH 쪽 하는 친구의 말을 들어보면 supervisor.d 가 데몬을 키고 끄고 이런 소리를 하길래 superviosr.d 가 클라우데라쪽의 어떤 프로젝트 인줄 알았습니다. 


제대로 이해한거면 supervisor.d는 파이썬의 프로젝트인것 같더군요 (http://supervisord.org/Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.)


보통의 경우 Flask 를 단독으로 띄워서 사용하지는 않는다고 하는것 같습니다. 사실 이번엔 제가 이건 처음이여서 다른것을 참고 하다보니요 아직 wsgi 의 개념은 잘이해는 안가는데 flask+guicorn 조합으로 사용하는것 같습니다.( http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/)


그다음 supervisor.d 에는 다음과 같이 적용을 시켰습니다 


[program:api]

command = gunicorn -w5 --certfile=cert.pem --keyfile=privkey.pem api:app -b 0.0.0.0:58080 --pythonpath /root/api

;directory = /root/api

user = root

numprocs=1

autostart=true

autorestart=true



일단 이걸로 사용하다가 ,  다음에는 이걸 사용하다가 Node.js 로 해봐야겠네요.. 


Node.js가 그렇게 좋다는데....(멍)



 EN-CNTNT-Infographic-VisualguidetoAzure.pdf


Microsoft Azure is a flexible,open, and secure public cloud built for business. Access abroad collection of integrated services that accommodate many languages and operating systems. Use world-class tools to accelerate a wide variety of app development and delivery capabilities.


가끔씩, Azure를 이용해서 자원을 생성해서 사용하고 있습니다. 오늘 메일박스를 보니, 예쁜그림을 하나 보내왔네요. 아마도 마소 홈페이지에 있겠지만.. 








'Study > Cloud' 카테고리의 다른 글

What is Microsoft Azure?  (0) 2016.12.07

혹시나 저 같은 이슈를 겪고 있는 분들을 


Hbase와 Hive를 연동할수 있는것처럼 MongoDB 를 Hive에 연동하여 사용할수 있습니다


https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage


이곳에서 라이브러리를 받아서 사용하시면, 되십니다.


mongo-hadoop-core.2.0.1.jar 

mongo-hadoop-hive-2.0.1.jar 

mongo-java-driver-3.2.1.jar




FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/bson/conversions/Bson 


추가적으로 다음 에러는 mongo-java-driver-3.2.1.jar 없어서 나오는 에러 입니다. 저 같은경우 제실수로 mongo-drvier를 사용해서 계속 오류가 났네요


http://rmoff.net/2016/06/15/classnotfoundexception-with-mongodb-hadoop-in-hive/




reference : 써티웨어(Certiware), http://certiware.co.kr

  1. test 2016.11.17 09:32

    test

이 장소를 Daum지도에서 확인해보세요.
서울특별시 강남구 역삼1동
도움말 Daum 지도



Ambari는 Hortonworks에서 개발한 하둡 클러스터를 프로비저닝(노드 / 하둡 컴포넌트 자동 설치), 매니지먼트(HDFS, HIVE 등등을 껏다 켯다, HA 등), 모니터링(HDFS , Hive 등등등)을 위한 아파치에 공개한 오픈소스 관리 도구입니다. 


최근, 암파리 아파치 커뮤니티에서 약간의 변경이 생겨서인재 Ambari 2.2일때는  RPM, apt-get등으로 바로 받을수 있는 주소를 공개 했었는데, 지금은 Ambari를 직접 컴파일하는 방법으로 설치 방법을 공개했습니다


그렇다고, RPM, Apt-get으로 설치를 못하는것은 아닙니다. Hortonworks 공식 홈페이지 다큐멘트를 찾아보면, 바로 패키지 형태로 제공할수 잇는 링크를 제공합니다 



\2016년 10월 19일 기준 암바리 2.4.1.0이 최신버전이고(HDP 2.5) 다음주소에서 암바리 repo주소를 확인할 수 있습니다


Apache Ambari https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.4.1


Ambari Hortonworks Document http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/download_the_ambari_repo.html


Hortonworks http://hortonworks.com/downloads/#data-platform



AWS 에 Putty로 PEM 키를 읽어들일려고 할때 , couldn't load private key unexpected end of file 오류가 난다면


현재 사용하고 있는 Putty 버전에 버그가 잇는것입니다.


http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 에서 최신버전을 받아서 다시 시도하시면 해결 되십니다.