최근, 폐쇄망 환경에서 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


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를 해당 버전으로 바꾼뒤 서비스를 다시 시작하였습니다





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 다시 한번 세팅해보세요 ~ 

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


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



자격증 미리보기라는 말이.. 좀 애매하긴 한데..

예전부터 느끼는건 공부하는것과, 시험보는것은 많이 다른것 같습니다. 공부는 말그대로 공부고 시험은, 시험준비를 위해 기출을 풀거나 해서 유형을 파악하는건데, HDPCA라는 녀석은 전혀 파악이 안되더군요. 사실 HDP를 쓰면 쓰겠지만


그런데 호튼웍스(Hortonworks) 쪽에서 AWS에서 미리 테스팅 해볼수 있는 환경을 제공합니다 


PRACTICE EXAM

Hortonworks University recommends that candidates attempt the practice exam to familiarize themselves with the exam environment and also with the types of tasks that appear on the certification exam.

.icon6.png

The practice exam is available in the cloud on Amazon Web Services (AWS)

icon6.png

You will need an AWS account to follow the instructions

icon6.png

We do not charge for the practice exam, but you do have to pay for an AWS instance, which is typically less than $1 an hour

http://ko.hortonworks.com/wp-content/uploads/2015/04/HDPCA-PracticeExamGuide.pdf   [관련 안내 파일]

기본적으로 AWS(https://aws.amazon.com/) 계정이 필요합니다.


1.EC2 선택


HDP on AWS



2. Launch Instance 선택

HDP on AWS


3. Community AMIs 선택

HDP on AWS


4. Hortonworks 검색 ,  Hortonworks HDPCAdministrator_2.3 PracticeExam_v3 - ami-11829421 선택.


HDP on AWS


5. 인스턴스 타입 선택, Next: Configure Instance Details

HDP on AWS

6. 기본설정 사용 , Next: Add Storage

HDP on AWS


7. 기본설정 사용, Next: Tag Instance

HDP on AWS


8. 인스턴스 이름 지정, Next:Configure Security Group

HDP on AWS


9. 보안 설정 (5901 포트 추가 ) review and launch

HDP on AWS



10.private 키 설정,  및 인스턴스 실행  

HDP on AWS






PIG, tez



PIG를 MapReduce 모드로 돌리면 발생하지 않는데 이상하게 PIG를 Tez 모드로 돌리면 Dump 뜰때마다 저런 오류가 있더군요..


웹상에서 보면 버전 문제라는 이야기도 있고..


아마 아직 남아있는 버그인것 같은데(현재 테스트중인 tez 버전은 0.84에 Pig는 0.16입니다.)



그때는


d = limit Alias 10

dump 와 같이 limit 을 걸어주면... 작동은 하는것 같습니다.



추가로 Hbase 1.1.1 이상에서 Pig를 연결해서 사용하시려면, Pig를 컴파일해서 사용하시면 됩니다.(일단 Apache에서 Pig를 설치한다고 할때)

(만약 파싱관련 오류가 난다면)



 

  1. 2016.08.23 13:39

    비밀댓글입니다

1.ambari-server 에 SSH 로 접속

2. ambari-admin-password-reset


ambari 암호 변경


https://community.hortonworks.com/questions/15063/default-usernamepassword-for-ambari.html



HBASE regionserver.HRegionServer: STOPPED: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException:



서버간 시간차이때문에 발생하는 오류입니다.


서버간 시간이 제대로 동기화 되었는지 확인해보셔야 됩니다.


또는 NTP 데몬을 계속 켜놔서 시간을 맞추는 방법도 있습니다. 

Apache Ambari를 사용하다보면, 암바리 자체를 이용해서 하둡 클러스터를 관리할수도 있지만.

떄로는 필요한 부분에 대하여 커스터마이징하거나, 또는 관리의 편의성을 위해 별도의 앱을 만들어 쓸 수도 있습니다. 



다음은 암바리의 컴포넌트를 API를 이용해서 시작 및 중지하는 방법입니다.


curl -u USER:PASS -i -H 'X-Requested-By: ambari' -X PUT -d  '{"RequestInfo": {"context" :"Stop '"$1"' via REST"}, "Body": {"ServiceInfo": {"state": "INSTALLED"}}}' http://HOST/api/v1/clusters/CLUSTER/services/COMPONENT


curl -u USER:PASS -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Start '"$1"' via REST"}, "Body": {"ServiceInfo": {"state": "STARTED"}}}'  http://HOST/api/v1/clusters/CLUSTER/services/COMPONENT



https://ambari.apache.org

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




`


java.lang.RuntimeException: Error applying authorization policy on hive configuration: java.net.ConnectException: Call From HOST2/192.168.1.12 to 0.0.0.0:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

        at org.apache.hive.service.cli.CLIService.init(CLIService.java:114)

        at org.apache.hive.service.CompositeService.init(CompositeService.java:59)

        at org.apache.hive.service.server.HiveServer2.init(HiveServer2.java:104)

        at org.apache.hive.service.server.HiveServer2.startHiveServer2(HiveServer2.java:411)

        at org.apache.hive.service.server.HiveServer2.access$700(HiveServer2.java:78)

        at org.apache.hive.service.server.HiveServer2$StartOptionExecutor.execute(HiveServer2.java:654)

        at org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:527)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Caused by: java.lang.RuntimeException: java.net.ConnectException: Call From HOST2/192.168.1.12 to 0.0.0.0:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:494)

        at org.apache.hive.service.cli.CLIService.applyAuthorizationConfigPolicy(CLIService.java:127)

        at org.apache.hive.service.cli.CLIService.init(CLIService.java:112)

        ... 12 more

Caused by: java.net.ConnectException: Call From HOST2/192.168.1.12 to 0.0.0.0:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)

        at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792)

        at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:732)

        at org.apache.hadoop.ipc.Client.call(Client.java:1431)

        at org.apache.hadoop.ipc.Client.call(Client.java:1358)

        at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229)

        at com.sun.proxy.$Proxy15.getFileInfo(Unknown Source)

        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:771)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:252)

        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:104)

        at com.sun.proxy.$Proxy16.getFileInfo(Unknown Source)

        at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2116)

        at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1315)

        at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1311)

        at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)

        at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1311)

        at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1424)

        at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:568)

        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:526)

        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:480)

        ... 14 more

Caused by: java.net.ConnectException: Connection refused

        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

        at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)

        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)

        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495)

        at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:612)

        at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:710)

        at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:373)

        at org.apache.hadoop.ipc.Client.getConnection(Client.java:1493)

        at org.apache.hadoop.ipc.Client.call(Client.java:1397)


HDP Ambari를 보니 Hive가 뻗어있길래 저런 오류가 나있더군요...한번 HDFS의 Core-site.xml 에서 defualt.fs 가 제대로 설정되어있는지 확인해보셔야 합니다. 


만약에 default.fs 쪽에 0.0.0.0:8020 으로 설정 하셨으면, 해당 네임노드 호스트로 바꾸면 될것 같습니다.

(지금 헷갈리는게,, 원래 저렇게 안썻나,,)


In file included from c/cffi1_module.c:3,

                 from c/_cffi_backend.c:6366:

c/realize_c_type.c: In function ‘realize_c_type_or_func’:

c/realize_c_type.c:577: error: ‘FFI_DEFAULT_ABI’ undeclared (first use in this function)

c/_cffi_backend.c: In function ‘init_cffi_backend’:

c/_cffi_backend.c:6458: error: ‘FFI_DEFAULT_ABI’ undeclared (first use in this function)

error: command 'gcc' failed with exit status 1

make[2]: *** [/root/hue/desktop/core/build/cffi-1.3.1/egg.stamp] 오류 1

make[2]: Leaving directory `/root/hue/desktop/core'

make[1]: *** [.recursive-install-bdist/core] 오류 2

make[1]: Leaving directory `/root/hue/desktop'

make: *** [install-desktop] 오류 2


yum install python-cffi

yum install libffi-devel


HUE 가 필요해져서 수동으로 설치하고 있는데, 다음과 같은 오류가 발생하네요

구글신에게 물어보니 저걸로 해결하라고 하면 되네요..


그런데 문제는 지금 다른 문제가 발생하고 있다는..

  1. Favicon of https://redeyesofangel.tistory.com BlogIcon Yuika eizt 2016.07.29 17:04 신고

    ++ 추가

    지금 생각해보면 Hue 공식홈페이지에서 docker Hue3 버전을 제공합니다.

    환경 구성해서 컴파일 하시는것보다 Docker로 구성하시는게 아마 정신건강에 편하실것 같습니다.

  2. Favicon of https://redeyesofangel.tistory.com BlogIcon Yuika eizt 2016.10.01 19:36 신고

    HUE 공식홈에 가면 Docker를 이용해서 3버전을 제공합니다..

    클라우데라의 경우는 이미 클라우데라 매니저를 통해 제공하겠지만. HDP의 경우는 docker 버전을 통해서 설정파일만 엮어주면 잘 동작합니다