아파츠 재플린 , 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")


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







저작자 표시 비영리 변경 금지
신고

사실, 언제부터인가 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가 그렇게 좋다는데....(멍)

저작자 표시 비영리 변경 금지
신고

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


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



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

예전부터 느끼는건 공부하는것과, 시험보는것은 많이 다른것 같습니다. 공부는 말그대로 공부고 시험은, 시험준비를 위해 기출을 풀거나 해서 유형을 파악하는건데, 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






저작자 표시 비영리 변경 금지
신고

1.ambari-server 에 SSH 로 접속

2. ambari-admin-password-reset


ambari 암호 변경


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

저작자 표시 비영리 변경 금지
신고


사용하는 입장에 따라 다르지만, 직접 Hadoop을 받아서 설정하는 방법도 있지만, HDP(물론 무료!)를 이용해서 필요한 환경을 구축하는 방법도 있습니다.


제 사례를 들어보면 HDFS 부터 YARN,HBase, zookeeper,Hive까지 설치하는데 몇시간이 걸린다면,(물론 스크립트로 만들수도 있찌만) Ambari를 이용해서 HDP를 이용하면 원하는 환경은 바로 구성이 됩니다.


좀더 자세한 설명은 hortonworks.com/hdp/ 와 호튼웍스 공식 문서를 통해서 확인하실수 있습니다.


http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0-Win/bk_installing_hdp_for_windows/bk_installing_hdp_for_windows-20140120.pdf


다음 스크린샷은 Ambari 2.2.1(마지막 버전)을 이용해서 HDP 2.3(최신버전은 2.4,,, 최신버전과의 차이점은 SmartSence 가 추가된듯.. 아직 다 안봐서 ,)을 설치하는 설명입니다.


스크린샷은 블로그 포스팅을 위해서 VM 위에서 싱글머신으로 설치하는 예제입니다.


(중간에 찍은 스샷을 날려먹어서.. 호튼웍스 공식 메뉴얼을 보시는면 매우 자세하게 나왔습니다.




설치버전 선택




보통의 아파치 하둡을 설정할때 HOSTS를 입력하는 부분, 아래부분은 SSH 키를 입력 하는 부분입니다.



다음 절차에서 각 해당하는 노드들에 대하여 에이전트를 배포하여 설치를 준비합니다.




다음에 필요한 하둡 컴포넌트를 선택합니다(물론 지금 설치를 안하더라도 나중에 설치가 또 가능합니다.)




NEXT를 눌러서 진행하면 자동으로 하둡 컴포넌트들이 배포가 됩니다.



설치가 완료된 이후의 모습입니다. 물론 그전에 설치하지 않은 하둡컴포넌트 또한 추가가 가능합니다.

저작자 표시 비영리 변경 금지
신고

하둡 2버전은 잘모르겠지만.


1버전을 이용할때는 리눅스에서 HDFS에 직접 마운트를 해서 사용하고 싶을때가 있었습니다.


그떄 fuse-dfs를 이용해서 마운트 했는데, 2버전때 없어졌나 했는데.. 제가 HDP(Hortonworks Data Platform)을 이용해서 그런지 잘 안보였던것 같더군요.. cloudera에는 fuse-dfs가 그대로 있던것 같았습니다. 홈페이지에서 보기에는 


http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.4/bk_hdfs_nfs_gateway/content/hdfs-nfs-gateway-user-guide.html



다른 배포판은 모르겠지만.. 아파치 하둡1을 이용할때는,, fuse-dfs를 사용하기 위해 관련 라이브러리 설치하고 하둡 컴파일 하고 귀찮은 절차가 필요했었는데.. HDP는 이런것은 확실히 편하네요 



사용방법은 간답합니다. 


mount -t nfs -o vers=3,proto=tcp,nolock (NDFS게이트웨이가 있는 노드):/ (마운트 하려는 폴더)




그리고 마운트된 폴더를 접속하면 다음과 같이 마운트가 잘되신것을 확인 할 수 있습니다 


저작자 표시 비영리 변경 금지
신고

일단 현재 상황은 MySQL 안에  366996 로우가 들어있는 상황이고, 여기안에 데이터가 있는 상황입니다

여기에 데이터가 있는데, 랭킹을 매겨야 하는 상황입니다. 


select B,T,(select count(*)+1 from 9_Spending_blk where T>t.T) as rank from a_blk as t order by rank asc;


SELECT a.B,
      a.T,
        count(b.T)+1 as rank
FROM  9 a left join 9 b on a.T>b.T and a.B=b.B
group by  a.B,

      a.T

통해서 RANK를 구하려고 했는데, 생각보다 느리게 되더군요.... 
MySQL로 구하는거 포기하고HIVE로 옮긴다음 해봤더니 금방 구할수 있었습니다.

절차는 다음과 같습니다. 

sqoop import --connect jdbc:mysql://127.0.0.1:3306/my --username root --password xer --table ttt  --hive-import –m 1


그다음 Hive에서 


select s.d, s.t, rank() over(ORDER by t asc) as rank from ttt as s


했더니, 14초만에 답을 얻을수 있었습니다.


자동으로 맵리듀스 작업이 걸리는게, 직접만들지 않아도 되서, Hive는 역시 좋네요..

이제 이걸 mysql로 돌려보내야하는데.. 

어떻게 했더라.. sqoop으로 될텐데.. 


저작자 표시 비영리 변경 금지
신고
1

+ Recent posts