ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 하둡(Hadoop)으로 데이터 저장 추출해보기
    Back-End/Hadoop 2024. 7. 25. 13:28
    반응형

    하둡을 사용하여 데이터를 저장하고 추출하는 과정은 여러 단계로 나뉘며, 각 단계는 비교적 직관적입니다. 아래에서는 하둡을 사용하여 데이터를 저장하고 추출하는 과정을 단계별로 쉽게 설명하겠습니다.

    hadoop

    1. 데이터 저장

    1.1 데이터 준비

    먼저 저장할 데이터를 준비합니다. 예를 들어, 로컬 파일 시스템에 저장된 로그 파일이나 CSV 파일 등을 준비합니다.

    1.2 HDFS에 데이터 업로드

    하둡 분산 파일 시스템(HDFS)에 데이터를 저장하기 위해, 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다. 이를 위해 hdfs dfs -put 명령어를 사용합니다.

    # 로컬 파일 system_logs.csv를 HDFS의 /data 디렉토리에 업로드
    hdfs dfs -put /path/to/local/system_logs.csv /data/system_logs.csv

     

    2. 데이터 처리

    2.1 MapReduce 작업 준비

    하둡에서 데이터를 처리하기 위해 맵리듀스(MapReduce) 작업을 작성합니다. 맵리듀스는 두 단계로 구성됩니다: 맵(Map) 단계와 리듀스(Reduce) 단계.

    • 맵(Map) 단계: 입력 데이터를 키-값 쌍으로 변환하여 분산 처리합니다.
    • 리듀스(Reduce) 단계: 맵 단계에서 생성된 키-값 쌍을 집계하여 최종 결과를 생성합니다.

    2.2 맵리듀스 작업 실행

    맵리듀스 작업을 실행하여 데이터를 처리합니다. 예를 들어, 단어 빈도수를 계산하는 맵리듀스 작업을 실행합니다.

    // 맵리듀스 작업 예시 (자바 코드)
    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);
        }
    }

    맵리듀스 작업을 실행하여 HDFS에 저장된 데이터를 처리합니다.

     

    hadoop jar wordcount.jar WordCount /data/system_logs.csv /output

     

    3. 데이터 추출

    3.1 HDFS에서 데이터 다운로드

    HDFS에 저장된 결과 데이터를 로컬 파일 시스템으로 다운로드합니다. 이를 위해 hdfs dfs -get 명령어를 사용합니다.

    # HDFS의 /output 디렉토리에서 로컬 파일 시스템으로 데이터 다운로드
    hdfs dfs -get /output /path/to/local/output

     

    3.2 결과 확인

    다운로드한 데이터를 확인하여 처리 결과를 검토합니다. 예를 들어, 텍스트 파일을 열어 단어 빈도수를 확인할 수 있습니다.

    cat /path/to/local/output/part-r-00000

     

    요약

    1. 데이터 저장:
      • 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다 (hdfs dfs -put 명령어 사용).
    2. 데이터 처리:
      • 맵리듀스 작업을 작성하고 실행하여 HDFS에 저장된 데이터를 처리합니다.
    3. 데이터 추출:
      • HDFS에 저장된 결과 데이터를 로컬 파일 시스템으로 다운로드합니다 (hdfs dfs -get 명령어 사용).
      • 다운로드한 데이터를 확인하고 분석합니다.

    이 과정은 대규모 데이터를 효율적으로 저장하고 처리하는 데 있어 하둡의 강력한 기능을 활용하는 방법을 보여줍니다. HDFS와 맵리듀스를 통해 분산 데이터 저장 및 처리를 쉽게 수행할 수 있습니다.

     

    반응형

    'Back-End > Hadoop' 카테고리의 다른 글

    하둡(Hadoop) MR(MapReduce)란?  (0) 2024.07.25
    하둡(Hadoop)이란?  (0) 2024.07.25
Designed by Tistory.