07.11-07.17

Java

  • this는 멤버 변수를 사용하고자 할 때 사용하는 예약어
  • class를 object화 해서 사용하는 것이 OOP의 핵심
  • Oveloading: Class 안에서 사용되는 메소드의 이름을 동일하게 쓰면서 파라미터의 개수, 타입을 다르게 해서 사용하는 방식. 하나의 메소드 명으로 다양한 기능이 수행 가능하다는 장점
  • generic 개념의 등장 이전에는 Type Casting으로 인한 overhead가 과도했음. 그러나, generic의 등장으로 Type Casting을 줄임으로써 overhead의 감소
  • Maven에 dependency 추가해주면 항상 Maven Clean 후 다시 Build해주는 습관 !
  • import maven project - existing maven project 로 다른 외부 maven project 불러올 수 있음
  • Maven build 안될 시, window - preference - java - installed JRE 에서 jre를 jdk 내의 jre로 변경해주면 가능한 경우 있음

hadoop

  • fsimage는 설정 값들의 Snapshot으로 파일 시스템의 상태를 저장
  • editslog는 작업들의 logging을 수행
  • 이클립스의 run configuration에서 Hadoop의 arguments를 직접 지정해줄 수 있음
  • Mapper에서 output으로 내는 key는 각 라인의 시작 문자의 index, value는 string 값
  • Mapper는 Subdivide and Conquer의 분할과 정복을 수행하며, Reducer는 결합과 Cardinality를 감소시킴
    cf. Cardinality: 집합의 크기로 집합의 '원소 개수'를 의미. 즉, Reducer는 Mapper가 반환하는 Key, Value 쌍을 결합시키며 집합의 원소를 줄이는 역할을 수행

Linux

  • 리눅스 시스템에서 jdk를 다운받기 위해 wget을 통해 링크를 사용할 경우, 종종 html 파일을 받아오는 경우가 많음. 이는 Oracle 사이트 내의 보안 문제로 아래와 같은 옵션을 추가하여 해결 가능
    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" '다운로드 링크 주소'

위 옵션은 jdk의 download를 위한 oracle license check의 기능의 대체와 인증의 문제를 대체하는 옵션

  • ssh Server명 '명령어;명령어'와 같은 형태로 ssh Login/Logout 없이 연결 서버 내 명령어 실행 가능
  • scp는 security copy의 약자로, 로컬 호스트와 원격 호스트 간 또는 두 개의 원격 호스트 간 파일을 안전하게 전송하는 수단
  • 환경변수 수정 이후에는 항상 source '파일명'으로 update 수행해주어야 함

Sqoop

: MySQL과 같은 저장소의 Data를 Import 해오는 기능 수행(SQL to Hadoop) SQL에서 Table을 Import해올 수도 있고, 받아온 SQL Table을 다시 다른 SQL Server에 Export할 수도 있음

  • Why Sqoop?
    • 자원에 대한 처리를 효과적이고 효율적으로 제어 가능
    • 데이터 타입의 mapping과 conversion(자동화 및 사용자에 의한 재정의)
    • meta data의 적용(Sqoop Record, Hive Metastore)

<예제>

  • Import: employees Table을 Sqoop에 Import
    ./bin/sqoop import --connect jdbc:mysql://192.168.111.160:3306/employees?useSSL=false --username 'hadoop' --password 'Pa$$w0rd123' --table employees -m 1 --target-dir /user/hadoop/sqoopMySqlToHdfs

  • Export: Import 해놓은 Table을 emplyees2라는 이름으로 SQL 서버에 Export
    ./bin/sqoop export --connect jdbc:mysql://192.168.111.160:3306/employees?useSSL=false --username 'hadoop' --password 'Pa$$w0rd123' --table employees2 -m 1 --export-dir /user/hadoop/sqoopMySqlToHdfs/part-m-00000


Hbase

: 구글의 빅테이블을 모델로 하여 만들어진, Hadoop eco-system에서 사용되는 NoSQL. NoSQL의 특성으로, 수십 억 개의 레코드에서 Random Access를 통해 단일 행에 대한 낮은 대기 시간의 access를 제공함

  • Master Server
    • region을 region 서버에 할당하고, 이 작업을 위해 Zookeeper의 도움을 받음
    • region 서버에서 region의 Load-Balancing을 처리. 즉, 사용량이 많은 서버를 언로드하고 영역을 덜 점유한 서버로 이동하는 등의 행위를 수행
    • 부하 분산을 협상하여 클러스트의 상태를 유지 및 관리
    • 스키마 변경 및 테이블과 열의 작성과 같은 기타 meta data 조작을 담당
  • Regions
    • region 서버들은 분할되어 지역 서버 전체에 퍼져있는 테이블들을 말함
    • 클라이언트와 통신하고 데이터 관련 작업을 처리
    • 그 아래의 모든 지역에 대한 읽기 및 쓰기 요청을 처리하며, 영역 크기 임계 값을 따라 영역의 크기를 결정

Flume

: 다양한 소스의 로그 파일, 이벤트와 같은 대량의 스트리밍 데이터를 집계하고 수집 및 전송하기 위한 툴이자 데이터 처리 메카니즘. Flume은 신뢰성이 높고 분산처리가 가능함


  • Flume 아키텍처
    • Flume Agent는 Flume의 독립적인 Daemon Process
    • Client 또는 다른 Flume Agent로부터 데이터(이벤트)를 수신하여 다음 Agent(또는 Sink)로 전달
    • Flume에는 둘 이상의 에이전트가 있을 수 있음


+ Recent posts