Big Data: 78개의 글
들어가며 Spark를 튜닝하기 위해서는 클러스터의 구조가 어떻게 구성이 되어 있는지, 프로그램은 어떤 순서로 실행이 되는지에 대한 지식은 보유를 하고 계셔야 시스템을 설정 및 튜닝이 가능합니다. 예를 들어 설정하는 옵션에서 executor-memory의 값을 설정해야 하는데, executor가 어떤 역할을 하는지 모른다면... 아니되오 . Spark의 components를 Driver Program, SparkContext, Cluster Manager, Worker Node, Executor, Task, Cache가 있고, 각각의 역할과 어떻게 동작하는지에 대해서 알아보겠습니다. Components Driver Program main()함수를 갖고 있는 프로세스를 말합니다. 우리가 spark-submi..
Spark란? Apache Spark는 빠르고 general-purpose cluster computing system입니다. 다시 말해서 기존에는 batch processing을 하기 위해서 MapReduce를 사용하고, sql을 사용하기 위해서는 hive를 사용하는 등 다양한 플랫폼을 도입해야 했었습니다. 하지만 이제는 Spark 하나의 시스템만을 설치해도 batch, streaming, graph processing, sql 등의 처리가 가능합니다. 또한 Spark는 Java, Scala, Python, 그리고 R언어의 API를 제공하기 때문에 쉽게(?) 구현을 할 수 있습니다. 아래의 high-level tools를 제공함으로써, 위에서 언급한 범용적인 플랫폼이라고 말할 수 있습니다. High-L..
Hadoop HDFS에서 디렉토리별 사용량 체크를 하는 방법 HDFS를 사용하다보면 directory 별로 디스크 사용량 체크가 필요하다. 아래와 같이 Permission denied 에러가 발생할것이다. 그 이유는 ROOT의 사용량 조회를 일반 유저 아이디로는 조회가 불가능하기 때문이다. 루트를 포함해 디스크 용량을 확인하기 위해서는 모든 키를 갖고 있는 HDFS 유저로 조회를 하면 된다. du: Permission denied: user=icecream, access=READ_EXECUTE, inode="/user/hue/.Trash":hue:hue:drwx------ ``` sudo -u hdfs hdfs dfs -du -s | sort -r -k 1 -g | awk '{ suffix="KMGT";..
하둡(Hadoop)에서 데이터 복사하는 방법 HDFS에서 데이터를 복사하는 방법은 아주 다양하다. 하지만 효율적으로 데이터를 복사하는게 중요하다 데이터를 복사하는 다양한 방법 일단 데이터를 복사하는 방법은 다양하다 로컬 클러스터 아래 속성을 통해서 로컬에 있는 데이터를, 클러스터에 있는 데이터를 옮길 수 있다. copyToLocal put get 클러스터 클러스터 클러스터간에 데이터를 옮기기 위해서는 아래와 같이 하면 된다. 클러스터 -> 로컬 -> 클러스터 과연 이렇게 하는 사람이 있을까 싶지만, 이렇게 하는 사람을 내가 보았음 클러스터 -> 클러스터 로 데이터를 옮기는 방법은 한가지가 아니다. cp distcp 두 가지 방법의 차이를 알지 못한다면, 작업에 엄청난 문제가 생길 것이다. 만약 distc..
Hadoop Cluster? 노드(node)는 하나의 컴퓨터를 말합니다. 이처럼 30~40개의 노드가 모여 하나의 rack을 구성합니다. rack은 물리적으로 같은 network의 switch에 모두 연결이 되어 있습니다. 그렇기 때문에 두 노드의 badnwidth는 다른 rack에 있는 노드보다 크게 됩니다. 즉, 데이터의 이동을 할 수 있는 폭이 크기 때문에 데이터의 속도가 빠른것을 알 수 있습니다. rack이 모여서 하나의 Hadoop Cluster를 구축하게 됩니다. 이처럼 network의 다른 switch에 연결되어 있는 rack으로 인해 어떤 성능 저하가 나타는지 추후에 알아보도록 하겠습니다. Hadoop의 주요한 컴포넌트는 HDFS와 MapReduce가 있습니다. HDFS(Hadoop Dis..
들어가며 우리에게 주어진 데이터가 1GB라고 생각해보자, 1GB의 크기를 갖는 데이터를 관계형 데이터베이스에 저장을 하고, 데이터를 처리하는데는 큰 어려움이 없을 것입니다. 하지만 데이터의 크기가 10GB, 100GB로 증가한다고 생각하면, 우리가 갖고 있는 컴퓨터의 성능을 업데이트를 해야 합니다. 하지만 만약 1TB, 10TB, 100TB로 데이터의 크기가 커진다면 어떻게 해야할까요? 그렇게 된다면 우리는 여러 컴퓨터를 이용해 분산으로 처리하는 방법을 사용해야 합니다. 하루에 처리할 내용을 몇시간에 처리하는게 일하는데 더 효율적이니 분산으로 처리하는게 좋을것 같습니다. 그렇다면 데이터가 어떻게 갑자기 늘어났을까요? 최근 스마트폰이 등장하면서 Facebook, Twitter, RFID readers, s..
First failure: Timed out after 120000 ms. Waiting for Cloudera Manager Agents to detect release: SQOOP_NETEZZA_CONNECTOR CDH를 설치하고 parcels을 배포할때 freeze상태가 되버리는데, 이 문제는 기존에 설치되어 있는 openjdk를 삭제하면 문제 해결 출처 : ourcstory.tistory.com/224?category=630694
Yarn? Hadoop 1.0에서는 JobTracker가 클러스터의 자원 배분과 Job관리를 함께 수행했기 때문에 JobTracker에서 병목현상이 일어났다. JobTracker가 하던 두 가지 역할-자원관리를 Resource Manager와 Application Master로 분리해서 JobTracker에 몰리던 병목을 제거했습니다. Resource Management, Scheduling/Monitoring을 구분하는 daemon의 기능을 분할하였습니다. global하게 ResourceManager, per-application ApplicationManager를 두자라는 아이디어에서 부터 시작했습니다. 범용 컴퓨팅 클러스터가 가능 (MapReduce)외에도 다양한 어플리케이션을 실행할 수 있으며, ..
들어가며 앞서 클러스터를 구축하는 방법에 대해서 설명을 하였다. [Cloudera] 클라우데라 설치하는 방법 - (Linux, Cloudera Manager) 그렇다면 이렇게 구축된 클러스터에 새로운 노드를 추가하기 위해서는 어떤 작업을 진행해야할까에 대해서 이번 글에 적으려고 한다. 막상 클러스트러를 구축할때 처럼만 설정하면 되지 라고 생각하지만, 막상 내가 각 노드에 어떤 내용을 추가했는지 기억이 안난다는 함정이 있다. 그래서 DataNode를 추가하거나 Spark의 WorkerNode를 추가를 할 경우에 어떤 설정 및 설치를 해야하는지 아래 설명한다. 1. 스토리지 추가하기 일단 새로운 노드를 클라우드에서 생성을 한다. 기존 노드들에서도 스토리지를 추가했기 때문에 생성이 완료되면 스토리지를 추가하자..
들어가며 Hadoop의 MapReduce와 HDFS 등 Hadoop Ecosystem을 설치하고, 설정을 하는게 매우 번거로운 작업이 많다. 그렇기 때문에 각종 Application을 패키지화 해서 개발자들에게 제공하는 회사들이 등장하기 시작한다. Cloudera와 Hortonworks가 바로 자신들만의 Manager를 통해서 각종 어플리케이션을 배포하고, 설정을 쉽고 빠르게 할 수 있도록 도움을 주고 있다. 그렇기 때문에 결과적으로 Hadoop, Spark, Hive, 그리고 Hue와 같은 기존에는 독립적으로 설치해서 사용했다면, 이제는 Cloudera에서 제공하는 Manager를 통해서 설치를 해보자. Pre-Installation 설치하기 전에는 호스트 등록과, ssh-keygen을 통해 ssh-k..