Hue 설치 Hue(Hadoop User Experience)를 이용하면 다양한 Apache Hadoop 에코시스템을 Web Interface로 접근할 수 있다. 의존성 패키지 yum -y install python2-devel sqlite-devel libxml2-devel libxslt-devel libffi-devel openssl-devel openldap-devel gmp-devel execvp-devel gcc gcc-c++ MySQL django의 Repository DB로 mysql을 사용한다. hue를 컴파일할 때 mysqld_config 명령도 필요하므로 먼저 설치해놔야 한다. 참고 : mysql 설치 미리 설치된 mysql 데이터베이스에 아래와 […]
[Hadoop] Hive 설치
Hive 설치 Hive를 이용하면 HDFS에 저장된 데이터를 HiveQL이라는 SQL-Like 언어로 쿼리할 수 있다. 사전 준비 JDK Hadoop Hadoop 파일시스템에 데이터파일을 저장하기 때문에 파일 저장소로서 하둡이 필수적이고, Hive가 설치되는 서버에 Hadoop Client가 설치돼 있어야 한다. (Hadoop 서버의 디렉토리를 통채로 복사해놓으면 된다.) 참고 : Hadoop 설치 MySQL metastore db로 mysql을 이용하기 위해 사전에 설치가 돼 있어야 한다. […]
[PySpark] dataframe을 python 자료형(dict)으로 변형하기
[PySpark] dataframe을 python 자료형(dict)으로 변형하기 spark driver 에서 데이터를 바로 사용하는 경우, dataframe은 다루기가 어려운 것 같다. dataframe의 collect()와 asDict()를 이용하면 Python 자료형으로 변환할 수 있다. dataframe 생성 pyspark에서 elasticsearch index를 조회해 dataframe을 생성한다. >>> from pyspark.sql import SQLContext >>> sqlContext = SQLContext(sc) >>> df = sqlContext.read.format(“org.elasticsearch.spark.sql”).option(“es.nodes”,”192.168.179.141:9200″).option(“es.nodes.discovery”, “true”).load(“${INDEX}/${TYPE}”) >>> df.registerTempTable(“tab”) >>> df = sqlContext.sql(“SELECT distinct […]
[PySpark] Elasticsearch Index 에서 DataFrame 생성하기
[PySpark] Elasticsearch Index 에서 DataFrame 생성하기 elasticsearch-hadoop connector 를 이용해서 spark dataframe을 생성한다. Spark 설치 spark 다운로드 및 환경설정 필요한 요소만 설치하고자 하는 경우 소스코드를 내려받아서 maven을 이용해 빌드해도 되지만 pre-compiled 바이너리를 이용한다. wget http://mirror.navercorp.com/apache/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz tar -xvzf spark-2.3.2-bin-hadoop2.7.tgz -C /app/spark/. mv /app/spark/spark-2.3.2-bin-hadoop2.7 /app/spark/2.3.2 find /app/spark/2.3.2 -mindepth 1 -maxdepth 1 -type d | xargs -I {} […]
[ElasticSearch] Scroll API
[ElasticSearch] Scroll API elasticsearch에서 기본적인 search API는 한 페이지를 리턴하고나면 search context가 소멸된다. search API에서 from, to 값을 이용해 pagination을 구현한 것은 별개의 쿼리가 매번 수행된 것으로 RDBMS로 치면 cursor가 소멸된 것과 같다. 대량의 데이터를 조회하기 위해서는 다른 방식을 사용해야하는데, Elasticsearch에서 RDBMS의 cursor와 같은 기능을 하는게 Scroll API 이다. 사용 방법 curl을 이용해 간단히 scroll […]
[Hadoop] 가용성을 고려한 Hadoop 2.x Cluster 설치
가용성을 고려한 Hadoop Cluster 설치 Namenode와 Resourcemanager를 active node,standby node로 각각 두 벌씩 구성함으로써 고가용성을 고려한 Hadoop Cluster를 설치한다. 사전 준비 의존 패키지 설치 namenode와 resourcemanager가 장애 상황에서 standby -> active 상태로 전환될 때에 fuser 명령을 이용해서 장애노드의 프로세스들을 정리하므로 psmisc 패키지를 설치한다. yum -y install psmisc JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 페이지에서 JDK 8 버전 바이너리 다운로드하고 […]
[Kafka] External Listener 설정
Kafka External Listener 설정 브로커가 기동될 때 InetAddress.getLocalHost.getHostAddress 가 사용됨. 클라이언트가 외부 환경에 있어서 브로커 접속이 불가능 한 경우 advertise.host.name 값 설정으로 해결할 수 있다. advertised.host.name=$EXT_HOSTNAME listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT listeners=INTERNAL://10.4.0.105:9092,EXTERNAL://0.0.0.0:9093 advertised.listeners=INTERNAL://10.4.0.105:9092,EXTERNAL://$EXT_HOSTNAME:9093 inter.broker.listener.name=INTERNAL
[Kafka] Python Consumer sample
#!/app/python/bin/python from kafka import KafkaConsumer consumer = KafkaConsumer(‘test’,bootstrap_servers=[‘$HOSTNAME:9093’]) for message in consumer: print (“%s:%d:%d: key=%s value=%s” % (message.topic, message.partition, message.offset, message.key, message.value))
[Kafka] Python Producer sample
#!/app/python/bin/python from kafka import KafkaProducer from kafka.errors import KafkaError producer = KafkaProducer(bootstrap_servers=[‘node1.qrm:9092′,’node2.qrm:9092′,’node3.qrm:9092’]) producer.send(‘accesslog_wp-bigdata’,str.encode(‘this is test’))
[Python] JayDeBeApi
JayDeBeApi The JayDeBeApi module allows you to connect from Python code to databases using Java JDBC. It provides a Python DB-API v2.0 to that database. https://pypi.org/project/JayDeBeApi/ install jdbc를 사용하다보니 java가 설치돼 있어야 한다. Python Version $ python –version Python 3.6.6 pip를 이용한 설치 $ pip install JayDeBeApi Collecting JayDeBeApi Downloading https://files.pythonhosted.org/packages/2a/63/5fbffcbf0463fe26f55ee8ff08bcbb812cab4df2decddfac645cbac966ed/JayDeBeApi-1.1.1-py3-none-any.whl Collecting JPype1 (from JayDeBeApi) […]