Open cheol2Y opened 7 months ago
우선적으로 Main instance에 Hadoop을 구축한다.
Data 인프라 구축을 위해서 데이터 저장소인 Hadoop은 필수적이기에 간단하게나마 구축할 예정
Namenode, datanode를 한곳에 구축한 후 이후에 데이터가 많아진다면 Sub Instance에 하둡을 이전 시킬 계획
docker-compose.yml
version: '3.3'
services:
hadoop-namenode:
image: apache/hadoop:3.3.5
volumes:
- ./hadoop_namenode:/hadoop/dfs/name
environment:
- HADOOP_NAMENODE_OPTS=-Dhadoop.tmp.dir=/hadoop/dfs/name
ports:
- "50070:50070"
- "8020:8020"
hadoop-datanode:
image: apache/hadoop:3.3.5
volumes:
- ./hadoop_datanode:/hadoop/dfs/data
environment:
- HADOOP_DATANODE_OPTS=-Dhadoop.tmp.dir=/hadoop/dfs/data
depends_on:
- hadoop-namenode
hive-metastore:
image: prestodb/hive3.1-hive:latest
volumes:
- ./hive_metastore:/var/lib/hive/metastore
depends_on:
- hadoop-namenode
spark-master:
image: apache/spark:v3.1.3
volumes:
- ./spark-data:/opt/spark-data
ports:
- "7077:7077"
- "8081:8080"
environment:
- SPARK_LOCAL_IP=spark-master
- SPARK_WORKLOAD=master
spark-worker:
image: apache/spark:v3.1.3
volumes:
- ./spark-data:/opt/spark-data
depends_on:
- spark-master
environment:
- SPARK_MASTER=spark://spark-master:7077
- SPARK_WORKER_CORES=1
- SPARK_WORKER_MEMORY=1G
- SPARK_DRIVER_MEMORY=1G
- SPARK_EXECUTOR_MEMORY=1G
- SPARK_WORKLOAD=worker
- SPARK_LOCAL_IP=spark-worker
Spark의 Executor는 추후에 성능에 맞게 변환예정 Spark - Master의 포트는 8081로 옮겨두었다. 8080은 쓰는 프로그램이 많기 때문에
Hadoop, Hive, Spark의 이미지를 가져올때 버전이 서로 호환 가능한지를 확실히 확인하고 가져와야한다.
Docker hub에 해당 이미지가 있는지 확인하고 알맞게 가져와야하는것도 잊지 말기
이미지들을 latest 버전으로 가져오면 인터넷에 정보가 많지 않으므로 낮은 버전을 가져오는 것을 추천
위에 처럼 간단히 구성될 줄 알았으나,, conf, yml 등 env파일을 설정해줘야했다.
Docker로 Hadoop과 Hadoop Eco System 구축하기