본문 바로가기
반응형

Data Base/Hadoop42

[Hadoop] : Hive 폴더 구조 및 Hive 데몬 실행 cd /usr/local/hive/conf sudo mv hive-env.sh.template hive-env.sh hive-env.sh에서 하둡 설치 위치 및 하둡의 사용 메모리 설정을 한다. sudo vim hive-site.xml hive-site.xml을 생성한다. hive.cli.prit.header true 데이터 조회할 때, 조회되는 컬럼 정보를 표현할지 여부, RDBMS의 컬럼명을 생각하면 된다. cd /usr/local/hadoop/sbin/ start-all.sh hadoop 계정으로 하둡을 실행한다. 2022. 5. 24.
[Hadoop] : Hive 다운로드 및 환경 변수 설정 Index of /hive/hive-2.3.9 Index of /hive/hive-2.3.9 dlcdn.apache.org 위 링크에서 다운로드를 해준다. cd /home/hadoop 하둡 계정 홈 디렉토리에 하이브 설치 파일을 rz 명령어로 업로드해준다. sudo cp apache-hive-2.3.9-bin.tar.gz /usr/local/ 이때, sudo 명령어로 복사했기 때문에 하이브 설치 파일의 소유주 및 그룹은 root로 설정된다. sudo tar -zxvf apache-hive-2.3.9-bin.tar.gz 하이브 설치 파일 압축을 해제한다. sudo ln -s apache-hive-2.3.9-bin hive 하이브 가상디렉토리(링크) 생성 환경 변수 설정 sudo vim /etc/profil.. 2022. 5. 24.
[Hadoop] : 하둡 시퀀스 파일 압축 풀기 package hadoop.MapReduce.seq; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.compress.SnappyCodec; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat; import org.apache.hadoop... 2022. 5. 24.
[Hadoop] : 시퀀스 파일 압축 하둡분산파일시스템에 저장된 데이터는 압축하여 저장이 가능하다. 맵리듀스 처리를 효율적으로 하기 위해 시퀀스 파일로 생성한다. 분석 및 처리의 빈도수 높지 않는 파일은 압축하여 저장하면, 하둡분산파일시스템의 저장소 양은 확보된다. 압축에 사용되는 압축 알고리즘은 SnappyCodec를 활용 SnappyCodec 맵리듀스 분석 대상 및 결과에 대한 압축을 위해 개발된 압축 방식 하둡에서만 사용 가능 Gzip과 유사한 압축 알고리즘 사용 다른 압축 알고리즘에 비해 상당히 빠른 압축 및 해제 시간을 가짐 블럭 단위 압축을 위해 사용 블럭 단위 압축을 하는 이유 압축 방법은 라인별 압축을 수행하는 ‘레코드단위 방식’일정 레코드를 묶어 ‘블록별 압축하는 블록단위’로 구분된다. 압축 효율성은 블록단위에 비해 레코드단.. 2022. 5. 19.
[Hadoop] : 시퀀스 파일별로 단어별 빈도수 세기 시퀀스 파일은 RecordReader 객체가 읽기 쉽게 만든 구조로 기존 맵리듀스 잡을 통해 실행이 가능하다. 이전 실습에서 수행한 ‘단어별 빈도수 세기’ 잡을 통해 실행이 가능하다. (아래 링크 참고) 2022.04.26 - [Data Base/Hadoop] - [Hadoop] : 맵리듀스를 활용해서 단어별 빈도수 분석, 단어 세기 hadoop jar mr.jar hadoop.MapReduce.wc.WordCount /result20/part-m-00000 /result21 정상적으로 실행된 맵리듀스 잡과 단어 빈도수 결과이다. 2022. 5. 19.
[Hadoop] : SequenceFile 프로그래밍 RecordReader 객체가 생성될 때 Map을 나눈다. RecordReader를 더 엄밀히 말 하면 LineRecordReader로 라인별로 Key와 Value를 나누고 Mapper를 호출한다. 아래 세 가지가 가장 많이 사용되는 InputFormat이다. FileInputFormat KeyValueTextInputFormat SequenceFileInputFormat 시퀸스 파일이란? 효율적인 맵리듀스 수행을 위해 생성된 파일 형태 맵리듀스는 64mb 단위로 블록을 나눠서 하둡분산파일시스템에 저장한다. 저장되는 파일의 블록단위가 64mb보다 작은 경우 하둡분산파일시스템에 낭비되는 데이터 공간 및 맵리듀스 실행시 성능 저하가 발생한다. 파일 구조는 key,value 형태로 구현된다. 맵 형태 시퀀스 .. 2022. 5. 17.
[Hadoop] : Map 프로그래밍 맵 프로그래밍은 맵리듀스에서 리듀스를 사용하지 않고 맵만 사용할 때 사용되는 프로그래밍 방식이다. 이미지 프로세싱, 파일 포멧 변경, 분석 대상 샘플링, ETL(Extract, Transform, Load) : 추출, 변환, 로드(저장) 등에 사용한다. 맵 프로그래밍은 리듀서를 사용하지 않기 때문에 생성되는 리듀서 객체는 존재하지 않는다. 맵리듀스의 카운터를 이용한다. 카운터는 맵리듀스에 정보 표현을 위해 사용하는 객체이다. package hadoop.MapReduce.maponly; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.Job; impor.. 2022. 5. 17.
[Hadoop] : Combiner, 컴바이너 Mapper는 많은 양의 데이터를 자주 생성한다. Mapper에서 생성된 데이터는 반드시 Reduce를 거쳐 처리되는데 Mapper에서 생성되는 데이터가 많을 수록 네트워크 부하는 증가된다. 이때, 네트워크 부하를 줄여 처리 성능을 향상시키기 위해서 컴바이너를 사용한다. 컴바이너는 보통 미니 리듀서(mini-Reducer)라고 보면 된다. Mapper 결과를 그룹화하여 다시 처리하는데 컴바이너로부터 나온 결과를 Reduce에서 전달한다. Combiner는 Reducer와 동일하게 사용한다. Key와 List 형태의 값을 가지고 출력 결과는 Key와 value의 쌍으로 구성된다. 보통 Reducer의 메소드를 활용하여 사용한다. 하지만, 컴바이너는 모든 맵리듀스 구성에 사용 가능한 것은 아니다. 합계와 같.. 2022. 5. 10.
[Hadoop] : URL 전송 결과가 성공인 요청 분석하기 하둡의 로그는 log4j를 사용한다. access_log는 서버에 요청된 모든 url을 기록한다. 전송 성공 : 200 전송 실패 : 200이 아닌 모든 값 400 경우 URL을 찾을 수 없다는 오류 setup, cleanup 함수를 활용한다. package hadoop.MapReduce.success; import hadoop.MapReduce.tool.WordCount2; import hadoop.MapReduce.tool.WordCount2Mapper; import hadoop.MapReduce.tool.WordCount2Reducer; import lombok.extern.log4j.Log4j; import org.apache.hadoop.conf.Configuration; import org.a.. 2022. 5. 3.
[Hadoop] : 맵리듀스 제어 함수, setup, cleanup setup 함수 환경 설정 값을 Mapper와 Reducer에 설정하기 위한 함수 작업이 시작되기 전에 실행 Mapper or Reducer에 setup 함수 오버라이딩 일반적으로 Mapper에 많이 사용 cleanup 함수 사용 설정된 환경 설정 값을 초기화하기 위해 사용 Mapper or Reducer에 setup 함수 오버라이딩 작업이 완료된 후 실행 함수 실행 후 사용된 메모리에 환경 설정 값들이 삭제되기 때문에 실제로 사용하지는 않는다. 2022. 5. 3.
[Hadoop] : ToolRunner 사용하기 툴러너는 맵리듀스에 필요한 사용자 정의 변수 등을 활용하기 위해 사용한다. 맵리듀스 전체 전역 변수 활용에 사용. 툴러너를 통해 정의한 Configuration 객체는 Mapper, Reducer 객체에서도 사용이 가능하다. Mapper와 Reducer는 setup과 cleanup 함수를 통해 활용 툴러너? 기존 드라이버 파일에 환경설정 관련 내용을 감싸서 처리한다. 기존 드라이버 파일에 환경설정 관련 내용을 감싸서 처리한다. 툴러너 관련 import 자바 객체 import org.apache.hadoop.conf.Configured; (클래스) import org.apache.hadoop.conf.Configuration; (클래스) import org.apache.hadoop.util.Tool; (인.. 2022. 5. 3.
[Hadoop] : 하둡, 맵리듀스 프로젝트 IP 별 호출 빈도 수 분석하기 access_log 파일로부터 URL을 호출한 IP별 빈도수를 분석한다. Access_log에 저장되는 항목들은 전세계 공통이다. 주요 항목 구성으 IP주소 - 접속시간 - 통신방법 - 통신프로토콜 - 전송코드이다. cd /data/file gzip -d access_log hadoop fs -put /data/file/access_log /access_log 파일 압축을 풀어주고 hadoop으로 옮겨준다. 코드는 아래 링크에서 확인한다. https://ohju96.notion.site/IP-5f41cf74fc6846a6ab8b652c7c2c6634 IP 별 호출 빈도수 분석하기 access_log 파일로부터 URL을 호출한 IP별 빈도수를 분석한다. ohju96.notion.site 빌드를 다시 해서 .. 2022. 4. 28.
[Hadoop] : 하둡, 맵리듀스 프로젝트, 3글자 이상인 단어만 빈도 수 분석해보기 단어의 길이가 3글자 이상인 단어만 빈도수를 분석하도록 하는 프로젝트를 시작한다. 단어는 대소문자를 따로 구분하지 않고 분석하지만 일단 소문자로 처리해 본다. 자세한 코드는 아래서 확인이 가능하다. https://ohju96.notion.site/3-0e58681981d141139f93ccc44de10c03 3글자 이상인 단어만 빈도수 분석하기 단어의 길이가 3글자 이상인 단어만 빈도수를 분석하도록 하는 프로젝트를 시작한다. ohju96.notion.site 2022. 4. 28.
[Hadoop] : 맵리듀스 버전 별 차이 하둡의 기능 개선으로 인해 필수 핵심 코어인 맵리듀스 API도 변경이 된다. 맵리듀스 API는 Old API와 New API로 구분이 된다. 1.x 버전을 MRv1이라 표현하고 2.x 버전을 MRv2라고 표현한다. 검색할 때 확실히 체크할 수 있는 게 패키지 명이 mapreduce.*면 2.xx대 버전, mapred.*면 1.xx대 이다. 객체 명도 좀 바뀌었다. 2.x 버전에서 생긴 setup과 cleanup 생겨다. 각각 맵이 실행하기 전에 실행되는 함수, 맵 함수가 완전히 끝나고 난 뒤에 실행이 되는 함수이다. 이렇게 관점, 시점에 따른 프로그래밍이 가능하게 바뀌었다. https://ohju96.notion.site/f6d35a9fd82c4a5c8d9f311fff2cefe9 2022. 4. 28.
[Hadoop] : 맵리듀스를 활용해서 단어별 빈도수 분석, 단어 세기 아래 링크에서 확인이 가능하다. https://ohju96.notion.site/1d16c6f74f7246e28aabe7c23a82681d 맵리듀스 실습 단어별 빈도수 분석 (단어 세기) ohju96.notion.site 2022. 4. 26.
[Hadoop] : 맵리듀스 기본 개념, 특징, 주요 처리 과정과 프로젝트 설명 맵리듀스 기본 개념 하둡 핵심 코어 기술 중 하나이다. 분산된 다양한 노드들의 작업을 통해 처리하는 기술이다. 각 노드에 분산되어 있는 데이터를 하나의 노드에 저장된 것 같이 처리할 수 있다. 맵리듀스는 Map과 Reduce로 구성되어있다. 맵리듀스 특징 자동으로 분산 및 병렬 처리 수행 장애 허용(Fault Tolerance) 개발자에 적합한 처리 기술 맵리듀스는 Java로 개발되었다. 맵리듀스 프로그래밍도 Java로 개발한다. 맵리듀스 주요 처리 과정 Map 싱글 HDFS 블록들에 대해 각 Map 작업이 수행된다. Map 작업들은 대체로 블록이 저장된 노드에서 실행된다. Shuffle and Sort 모든 Mapper에서 Shuffle and Sort 작업이 실행된다. 모든 Map 작업들이 종료될 때.. 2022. 4. 26.
[Hadoop] : 하둡 동작 테스트 - Master Server 📌 마스터 서버에서 hadoop 사용자로 해야 한다. touchz로 0바이트 크기의 파일을 업로드한다. hadoop fs -touchz /test hadoop fs -ls / 이렇게 나온다. 하둡은 시작 완료 되는데 시간이 좀 걸린다 때문에 아래 명령어로 하둡의 데몬이 모두 실행되었는지 확인하고 싶다. 간단한 확인 방법은 하둡의 네임 노드 데몬은 시작 시간이 가장 오래걸리기 때문에 9000 포트가 실행되면 완료인 것을 알 수 있다. netstat -ntlp | grep java 만약 하둡 장애가 발생하면 실행 로그를 봐야한다. 네임노드 로그와 데이터 노드 로그를 보면 된다. 하둡에 사용되는 리소스를 관리하기 위해 하둡 리소스 매니저를 사용하는데 웹 기반으로 동작한다. 아래 포트 번호를 입력해서 접속해 본.. 2022. 4. 21.
[Hadoop] : 하둡 시작할 때 실행되는 데몬들 jps 명령어를 사용한다. 마스터 서버에서 hadoop 사용자로 시작한다. jps 아래와 같이 나오게 된다. 슬레이브 서버 1에서 root 사용자로 시작한다. jps 슬레이브 서버 2에서 root 사용자로 시작한다. jps 각 슬레이브 서버에 아래와 같이 나와야 한다. 만약, 아래와 같이 나오지 않으면 ssh Key 오류를 의심해 보자. https://ohju96.notion.site/8d7cbf11f9744820b9d9e8aaa9e28818 하둡 시작할 때 실행되는 데몬들 jps 명령어를 사용한다. ohju96.notion.site 2022. 4. 21.
[Hadoop] : 하둡 시작 - Master Server 마스터 서버에서 hadoop 계정으로 실행한다. sbin 디렉토리의 start-all.sh를 실행한다. cd /usr/local/hadoop/sbin/ ./start-all.sh https://ohju96.notion.site/Master-Server-6b396795ee6a490abb321f7a5fabfa85 하둡 시작 - Master Server 마스터 서버에서 hadoop 계정으로 실행한다. ohju96.notion.site 2022. 4. 21.
[Hadoop] : 하둡 방화벽 포트 열기 - Slave Server 2 마스터 서버는 데이터를 저장하기 위해 슬레이브 서버2의 데이터 노드에 파일을 전송한다. 데이터 노드가 사용하는 포틍니 50010번 포트의 방화벽을 해제해야 한다. 아래 코드는 슬레이브 서버 2에만 적용한다. sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all 적용을 확인한다. 2022. 4. 21.
[Hadoop] : 하둡 방화벽 포트 열기 - Slave Server 1 마스터 서버는 데이터를 저장하기 위해 슬레이브 서버 1의 데이터 노드에 파일을 전송한다. root 사용자에서 시작한다. 이 코드는 슬레이브 서버1, 2 중에서 슬레이브 서버 1에만 적용한다. (아래서 슬레이브 서버 2도 똑같이 하긴 한다. ) master Server, Slave Server1, 2 설정하기 master Server, Slave Server1, 2 설정하기 마스터 서버, 슬레이브1,2 서버의 호스트 네임을 변경해준다. www.notion.so 데이터 노드가 사용하는 포트인 50010번 포트의 방화벽을 해제해야 한다. sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp sudo firewall-cmd --reload sudo .. 2022. 4. 21.
반응형