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로 사용




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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


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


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


yarn rmadmin  -refreshNodes


반대로 제거할때는


yarn.exclude 에 넣고


yarn rmadmin  -refreshNodes



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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 절차가 수행된다음 제거

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


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




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


사용법


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


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



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



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

최근 클러스터 환경을  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")


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







저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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 입니다


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



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


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

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


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

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

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

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



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
맨날 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 하둡 쓰려니까 어렵네요 ㅠㅠ 























저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


twitter scrooge 를 


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


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


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


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



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


HDP 만 사용하다가, 


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


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


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


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


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


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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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


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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  1. test 2016.11.17 09:32 신고

    test

저작자 표시 비영리 변경 금지
신고
이 장소를 Daum지도에서 확인해보세요.
서울특별시 강남구 역삼1동
도움말 Daum 지도
크리에이티브 커먼즈 라이선스
Creative Commons License



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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



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

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






저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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를 설치한다고 할때)

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



 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



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



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


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


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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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




`


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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 으로 설정 하셨으면, 해당 네임노드 호스트로 바꾸면 될것 같습니다.

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


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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 가 필요해져서 수동으로 설치하고 있는데, 다음과 같은 오류가 발생하네요

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


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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  1. Favicon of http://redeyesofangel.tistory.com BlogIcon Yuika eizt 2016.07.29 17:04 신고

    ++ 추가

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

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

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

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

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


사용하는 입장에 따라 다르지만, 직접 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를 눌러서 진행하면 자동으로 하둡 컴포넌트들이 배포가 됩니다.



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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


2016/03/08 - [Study/--Hadoop Eco(Apache/HDP)] - hbase table already exists


어제 관련된 몇가지 조치를 하다가 HDFS 내의 HBASE를 날렸는데오 존재하는 테이블이라 나와서 여러가지를 해보았는데,


결론은 Zookeeper에 Table남아있어서 생긴 결과였습니다. 


외국 해외포럼에서 찾아보니 좀비 테이블이라고 지칭하는데, 이걸 제거하는 방법은 Zookeeper Server 접속하며서 Hbase 노드에 있는 Table a목록중에 해당 테이블을 제거 하면 됩니다.



이번에 HBASE 쓰면서 느낀건.. 엄청 잘깨진다..

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


지금 상황은 Hbase가 잘못되어서 다시 설치하려는 케이스입니다.


HDFS 안에 잇는 Hbase를 지웠는데 테이블을 생성하려고 할때 테이블이 존재한다면, 


zookeeper 내부에 있는 Table 정보도 지워주셔야 됩니다. 


올바른건지 모르겠는데, 아마 다른 방법이 있을것 같은데,, 시간이 없다보니 


zookeeper 내부에서 rmr /hbase 하고 hbase 들어가면 주키퍼에 /hbase 가 없다고 나올겁니다..


저는 이상태에서 콘솔상에서 hbase hbck -fix를 하고 hbase shell로 다시 들어가니 다시 잘되네요 



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

현재 상황이 외부인터넷이 연결된 클러스터에서 개발을 하고 Hbase에 들어있는 내용을 클라이언트의 폐쇠된 인터넷으로 클러스터 데이터를 옮기는 작업을 하고 있습니다.


다행은, 브릿지가 있어서 한대의 컴퓨터를 통해서 작업중이던 클러스터에 접근이 가능한 상황입니다


MySQL와 같이 RDMBS에서는 DUMP 방법이 편하게 되어있는데, 참HBASE는 뭐같네요


하지만 Backup Resotre방법은 쉽습니다.. 단 현 이방법은 테이블 단위로 진행이 됩니다.


 bin/hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]>


다음과 같은 명령어를 이용해서 테이블을 백업합니다. 그러면 백업된 내용은 HDFS로 나오게 됩니다. 이걸 옮기려고 하는 환경으로 옮깁니다.

저같은경우는 폐쇠된 클러스터이기 때문에 로컬 복사해서 가져왔습니다 그런다음 작업할 위치의 클러스터에서 HDFS에 다시 올립니다


$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>


HDFS에 올린다음 다음 명령어를 이용해서 테이블을 복구해야합니다.

이때 중요한것이 Hbase에 테이블과 컬럼패밀리는 선언이 되어있어야합니다.RDBMS식으로 말하면 스키마는 미리 만들어놓으셔야합니다




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

HBase 데이터를 만지다가, 생각지도 못한것으로 고생을 해서 리마인드 차원에서 포스팅 합니다.


Java또는 Spring 에서 Hbase를 사용하는 방법은

1. Native Library
2. Trift

3. Rest API


이때 속도는 1 > 2,3 정도 Native 방식이 빠름,

만약에 Native 방식을 할때는,Hbase와 같은 네트워크 망을 사용해야하고 Client에서 반드시 hosts를 지정해서 사용해야됨(만약 다른 네트워크라면 Trift와 Rest로 사용가능) ..(관련해서 스택오버플로우에도 물어보긴 했지만.. 재미는 못봤음)


Hbase같은경우 , 일반적인 RDBMS 처럼 select의 개념으로 생각면 피곤. HBASE의 경우 Select에 해당하는것이 scan인데 이때 전체를 fullScan 해서 필터링 하는 방식이기 때문에 상당히 느려터짐


왠만한 값은 유니크한 값(타임라인 테이터같이)이 있다면 그걸 row로 잡아서 넣으면 매우 빠름, 만약 row가 애매하다면 Hive를 이용해서(RDMS로 처리가능하다면 처리해도 상관은 없음) Hbase에 넣는방법도 있음 .


그런데, Hbase는 참 값을 가져오는게 모해서 Hive로 extenal Table을 연결해서 쓸수 있는데, 문제는 이때 Hive가 where절에 조건이 몇개만 들어가도 MapReduce가 걸려버림 , Tez여도 웹에서 가져다 쓰기에는 안좋음


아직 테스트 단계에서만 사용하고 있지만 이런 대안으로 Pheonix도 쓴다고 하는중


실제로 지금 소스좀 분해하고 있는 오픈소스 프로젝트를 보면 Pheonix를 사용함 


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

하둡 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게이트웨이가 있는 노드):/ (마운트 하려는 폴더)




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


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

sqoop export 를 할때 For input string: "\N" 해결 할수 있는 방법

Sqoop export 옵션에  --input-null-string '\\N' --input-null-non-string '\\N' 추가 



2015/10/29 - [Study/--Hadoop Eco(Apache/HDP)] - Sqoop 1.4.6 설치, 사용 예제(Migrating data using sqoop from Mysql to HBase)

2015/11/16 - [Study/--Hadoop Eco(Apache/HDP)] - Hive를 이용해서 Rank 구하기

2015/12/23 - [Study/--Hadoop Eco(Apache/HDP)] - Sqoop-export : from hive to mysql




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



환경은 Cetnos 64bit 30GBRAM, MySQL 5.7 버전을 사용하고 있습니다. 

많은 텍스트들을 보면 Hadoop MapReduce에서 반복적인 작업은 지양하라고 되어있는데,


현재, 싱글 머신에서 돌리기에는 양이 너무 많아서(쓰레드를 붙이더라도)... MapReduce에 약간의 꼼수를 써서 포팅해서 사용하고 있습니다. 


현재 10개의 Hadoop Node에서 총 40개의 Task(MapReduce) 걸었습니다.


Map 작업 한번에 총 약 12개 정도의 쿼리를 날립니다.


사실 이 쿼리가 단일 머신에서 할때는 0.55ms 정도 나오는데 10Node로 동시에 Query를 날리니 9s 넘게 걸리더군요.. 물론 제가 쿼리를 엉망으로 만든것은 있습니다.


이러한 문제점을 해결하기 위해, 쿼리에 사용되는 Table 들을 MemoryDB로 전환해서 올려논 상태입니다.

예를들면 create table Memory_1 like Orginal 1, 후 insert into Memory_1 select * from Original 이런식으로요


그런데 중간에 MySQl Memory DB Table is FuLL 에러가 나는것입니다. 옮기는 절차는 Python 으로 스크립트를 만든 상태입니다. 


이때 구글링을 해보니 max_heap_table_size 변경해주라고 하더군요, 저 같은경우는 결론적으로 15GB 정도로 했는데, 중간중간 값을 변경해 가면서, 값을 올린 케이스 입니다. 


SET max_heap_table_size =16106127360 //Bytes





현재 당장은, Workbench 에 나온데로 처리는 하고 있습니다...


아무래도 이번에 바쁜일이 끝나면, NoSQL쪽이나 MySQL, MariaDB 쪽도 좀더 파봐야될것 같습니다. 






저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

만약 Hive에서 test라는 테이블을 mysql로 옮길때는 

1. Hive의 Test와 동일한 Test테이블을 Mysql에 생성

2. sqoop 을 이용 


sqoop export  --connect jdbc:mysql://192.168.1.1/database --username user --password password --table test --export-dir /apps/hive/warehouse/test --input-fields-terminated-by '\001' --lines-terminated-by '\n'



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

일단 현재 상황은 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으로 될텐데.. 


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
12

+ Recent posts

티스토리 툴바