Windows에서 Docker Desktop을 사용하여 몇 분 만에 Hadoop 플레이그라운드 생성
14575 단어 bigdatajavacodenewbiedocker
준비
도커
Docker를 사용하면 특정 소프트웨어(이 게시물의 Hadoop 포함)에 대한 복잡한 설치 절차를 거치지 않아도 되며 디스크 공간을 확보해야 하는 경우 명확하게 삭제할 수 있습니다.
첫 번째 단계는 컴퓨터에 Windows(OS가 Mac인 경우 Mac용)용 Docker Desktop을 다운로드하여 설치하는 것입니다. 이제 Docker Desktop은 백엔드로 Hyper-V 대신 WSL 2(Linux 2용 Windows 하위 시스템) 사용을 지원합니다. Windows 시스템에 WSL이 없는 경우 this official guide에 따라 활성화할 수 있습니다.
Docker 데스크톱이 설치되고 실행되면 터미널(Powershell/WSL 셸)에 다음 명령을 입력하여 버전을 확인하여 Docker와 Docker Compose의 올바른 설치를 테스트할 수 있습니다.
$ docker --version
Docker version 20.10.13, build a224086
$ docker-compose --version
Docker Compose version v2.3.3
샘플 도커 컨테이너를 시작하여 도커의 기능을 확인할 수도 있습니다.
$ docker run -d -p 80:80 --name myserver nginx
VSCode
모든 개발자가 VSCode를 설치했다고 확신하므로 VSCode에 플러그인Remote Development이 설치되어 있는지 확인하기만 하면 됩니다. 이를 통해 컨테이너, 원격 머신 또는 WSL에서 개발할 수 있습니다.
하둡으로 가자
설정
아래 단계에서 볼 수 있듯이 Docker로 Hadoop 환경을 설정하는 것은 다소 간단합니다.
특정 경로에서 repo big-data-europe/docker-hadoop을 복제한 다음 docker-compose
를 통해 Hadoop 클러스터를 설정합니다.
git clone [email protected]:big-data-europe/docker-hadoop.git
cd docker-hadoop
docker-compose up -d
이제 모두 설정되었습니다 :). 잠시 후 http://localhost:9870/을 방문하여 제대로 작동하는지 확인할 수 있습니다.
기차에 타다
드디어 새로운 Hadoop 클러스터를 만날 시간입니다. VS Code를 시작한 다음 왼쪽 패널로 이동하여 원격 개발 플러그인을 선택합니다. 위의 드롭다운에서 "컨테이너"를 선택한 다음 "컨테이너에 연결"아이콘을 클릭하여 "namenode"라는 컨테이너를 찾아 연결합니다. 당신은 Hadoop 세계에 도착했습니다!
안녕하세요 "워드카운트"
이것이 Hadoop 클러스터를 테스트하는 방법입니다. Word Count 예제(Java의 소스 코드에서)를 실행하여 작동 방식을 확인합니다.
하지만 아직 서두르지 마세요. 할 일이 몇 가지 더 있습니다. 샘플 입력 데이터를 만들어야 합니다.
VS Code에서 터미널을 엽니다. 그런 다음 다음을 실행합니다.
mkdir input
echo "Hello World" > input/f1.txt
echo "Hello Docker" > input/f2.txt
우리가 만든 입력은 로컬(더 정확하게는 도커 컨테이너 로컬)에 저장됩니다. 또한 HDFS에 복사해야 합니다.
hadoop fs -mkdir -p input
hdfs dfs -put ./input/* input
준비가 끝나면 공식 WordCount 예제를 this link에서 얻을 수 있습니다.
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
WordCount.java
파일명으로 저장합니다.
이제 작동하는지 알아 봅시다.
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
hadoop com.sun.tools.javac.Main WordCount.java
jar cf wordcount.jar WordCount*.class
hadoop jar wordcount.jar WordCount input output
로그가 많은 것 같지만 우리가 신경 쓰는 것은 출력입니다. cat
명령으로 출력하십시오.
$ hdfs dfs -cat output/part-r-0000*
Docker 1
Hello 2
World 1
만세! 우리는 해냈다!
대청소
이것은 간단합니다. 이 명령을 사용하면 컴퓨터를 더 쉽게 사용할 수 있습니다.
docker-compose down
승인
이 문서는 José Lise의 this article을 상당히 참조합니다. VSCode로 개발하는 방법에 대한 내용을 추가했습니다.
Reference
이 문제에 관하여(Windows에서 Docker Desktop을 사용하여 몇 분 만에 Hadoop 플레이그라운드 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/txfs19260817/create-a-hadoop-playground-with-docker-desktop-on-windows-in-minutes-10im
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ docker --version
Docker version 20.10.13, build a224086
$ docker-compose --version
Docker Compose version v2.3.3
$ docker run -d -p 80:80 --name myserver nginx
설정
아래 단계에서 볼 수 있듯이 Docker로 Hadoop 환경을 설정하는 것은 다소 간단합니다.
특정 경로에서 repo big-data-europe/docker-hadoop을 복제한 다음
docker-compose
를 통해 Hadoop 클러스터를 설정합니다.git clone [email protected]:big-data-europe/docker-hadoop.git
cd docker-hadoop
docker-compose up -d
이제 모두 설정되었습니다 :). 잠시 후 http://localhost:9870/을 방문하여 제대로 작동하는지 확인할 수 있습니다.
기차에 타다
드디어 새로운 Hadoop 클러스터를 만날 시간입니다. VS Code를 시작한 다음 왼쪽 패널로 이동하여 원격 개발 플러그인을 선택합니다. 위의 드롭다운에서 "컨테이너"를 선택한 다음 "컨테이너에 연결"아이콘을 클릭하여 "namenode"라는 컨테이너를 찾아 연결합니다. 당신은 Hadoop 세계에 도착했습니다!
안녕하세요 "워드카운트"
이것이 Hadoop 클러스터를 테스트하는 방법입니다. Word Count 예제(Java의 소스 코드에서)를 실행하여 작동 방식을 확인합니다.
하지만 아직 서두르지 마세요. 할 일이 몇 가지 더 있습니다. 샘플 입력 데이터를 만들어야 합니다.
VS Code에서 터미널을 엽니다. 그런 다음 다음을 실행합니다.
mkdir input
echo "Hello World" > input/f1.txt
echo "Hello Docker" > input/f2.txt
우리가 만든 입력은 로컬(더 정확하게는 도커 컨테이너 로컬)에 저장됩니다. 또한 HDFS에 복사해야 합니다.
hadoop fs -mkdir -p input
hdfs dfs -put ./input/* input
준비가 끝나면 공식 WordCount 예제를 this link에서 얻을 수 있습니다.
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
WordCount.java
파일명으로 저장합니다.이제 작동하는지 알아 봅시다.
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
hadoop com.sun.tools.javac.Main WordCount.java
jar cf wordcount.jar WordCount*.class
hadoop jar wordcount.jar WordCount input output
로그가 많은 것 같지만 우리가 신경 쓰는 것은 출력입니다.
cat
명령으로 출력하십시오.$ hdfs dfs -cat output/part-r-0000*
Docker 1
Hello 2
World 1
만세! 우리는 해냈다!
대청소
이것은 간단합니다. 이 명령을 사용하면 컴퓨터를 더 쉽게 사용할 수 있습니다.
docker-compose down
승인
이 문서는 José Lise의 this article을 상당히 참조합니다. VSCode로 개발하는 방법에 대한 내용을 추가했습니다.
Reference
이 문제에 관하여(Windows에서 Docker Desktop을 사용하여 몇 분 만에 Hadoop 플레이그라운드 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/txfs19260817/create-a-hadoop-playground-with-docker-desktop-on-windows-in-minutes-10im
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Windows에서 Docker Desktop을 사용하여 몇 분 만에 Hadoop 플레이그라운드 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/txfs19260817/create-a-hadoop-playground-with-docker-desktop-on-windows-in-minutes-10im텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)