실습 시간이 많았던 관계로 필기가 적어 한 번에 모아 올림


- 데이터베이스의 성능을 올리는 가장 좋은 방법은 하드웨어의 스펙을 올려주는 'Scale Up'

--> 그러나, 현실적으로는 비용의 문제로 어려움. 따라서 우리는 'Scale Out'을 사용하는데 이는 병렬 형태의 컴퓨팅을 통한 성능 향상법


- wget 시,  http://archive.apache.org/dist/hadoop/common 사이트 사용

cf. Hadoop 2.x 에서는 Protocol Buffer를 사용하는데, 안정화된 2.5.0 버전을 사용하는 것이 일반적


- Hadoop's core components

: HDFS(Hadoop Distributed File System)으로 대용량 데이터들의 저장

MapReduce를 통해 Batch Processing


- Hadoop은 비관계형 데이터를 저장. 우리가 직접 API를 다 구상해서 사용해야 함


- HDFS는 대용량의 데이터를 Block화 하여 Node들에 나누어 저장하며, Hadoop 2.x 버전에서는 데이터 블록의 기본 용량을 128MB로 가져감


- Hadoop은 Block들 replicate하여 하나의 data block이 오염되거나, 삭제되더라도 다른 복제 set의 사용


- 하나의 네임 노드가 데이터 노드들에게 데이터의 처리와 저장을 분산시키는 것.

--> 네임 노드가 죽으면 그 기능들이 수행되지 않는 문제가 있었으나, 2.x 버전으로 넘어오며 ZooKeeper를 통해 standby 노드가 본래의 네임 노드를 대체할 수 있는 기능을 수행(HA: High Ability)


- 네임 노드는 meta date과 logging file들만 지니고 있음. 데이터 노드들이 실제 Data block 보유


- masters에 등록하는 것은 Secondary Node


- Hadoop 2.x의 구성

: Name node(Resource Manager) + Data node(Node Manager) / YARN 

--> Resource Manager는 Application managing과 scheduler의 역할을 수행하며, Node Manager는 container 생성되어서 task를 수행

- HDFS는 문제 해결을 위해 editslog와 fsimage 파일로 메타데이터 및 기타 장애 처리


- Mapper<Object, Text, Text, IntWritable>

: Object와 Text는 input이며, Text와 IntWritable은 output. 이들은 하둡에서 사용되는 Wrapper Class로 어떠한 자료형이 어떤 Wrapper Class로 사용되는지 알아야 함


- Reducer<Text, IntWritable, Text, IntWritable>

: Mapper는 key, value로 구성된 Java map data들을 만들어주며, Reducer가 반환된 key와 value를 더하는 방식으로 word counting !


* Java

- maven은 일종의 yum과 같은 개념으로 넷상에 존재하는 repository를 사용하는 것


- 인터페이스는 규약적 개념으로 사용하며, 인터페이스를 사용하는 모든 클래스들이 동일한 메소드를 사용하게 하여, 표준화 기능을 수행하도록 함


- static 형태로 method를 만들게 되면 instance를 만들지 않고도 해당 method의 사용이 가능


- class 파일을 jar로 export하는 것이 java의 배포 개념이며, build path -> configure build path -> Import external jar로 다른 패키지의 클래스를 사용 가능


- Type Cast

: public void TestMethod(Object o) vs. public void TestMethod(String o)

-> 전자는 하나의 메소드로 Type Conversion 통해 모든 자료형을 인수로 받을 수 있으나, 후자의 경우 String 자료형만 인수로 받을 수 있기 때문에 자료형에 따른 method를 여러 개 만들어야 하는 단점이 존재

-> 다형성을 이용하여 상위 클래스로 자식 클래스를 받은 후, method들을 interface 통해 모두 통일하는 기법을 많이 사용하는데, 이는 코드의 양을 획기적으로 줄일 수 있음


- 캡슐화 / 상속성 / 다형성 / generic 을 정확하게 아는 것이 매우 중요

+ Recent posts