20160517

1. 동시성 프로그램의 이해
– 병렬성을 어떻게 확장시킬 것인가? MapReduce를 사용하면 됨. 목표: 자동화된 병렬화, 연산의 분산 지원. transparent fault tolerance. MapReduce는 Lisp의 map, reduce에 영향을 받아 만들어짐. map은 데이터들에 대해 같은 연산을 수행함. reduce는 연산 결과를 결합한다.

word count map reduce.PNG

– MapReduce 프레임워크가 key-value에 대해 연산을 적용하고, 이후에 key에 대해 value의 리스트를 만든다. 각 key마다 value 연산 결과 리스트가 생기는 것.

map reduce flow.PNG
– MapReduce 모델의 병렬성이 높은 이유? Map과 reduce가 여러 개의 데이터에 동시에 적용될 수 있기 때문이다. 각각은 독립적으로 수행될 수 있으며, 그렇게 하더라도 결과는 같음. 이를 다시 reduce한다. 일반적으로 map worker의 수가 reduce worker의 수보다 많다.
– MapReduce의 map worker 하나가 실패하면 어떻게 하나? 다시 실행하면 된다. 그렇게 해도 연산이 독립적이기 때문에 문제가 없음. 하지만 일부의 실패로 인해 전체 실행 시간이 길어질 수 있다는 문제가 있음.
– 초기의 MapReduce는 input, intermediate output, output 모두 디스크에 썼음.
– MapReduce는 data locality를 높이고자 데이터가 있는 위치에 worker를 보내고자 하지만, 안 된다면 복사를 수행한다. 미리 데이터를 여러 노드에 복사해둔다면 locality 높일 수 있음.
– Combiner는 이른 단계에서 reduce를 수행하며, 이를 통해 성능 향상 가능하다.


2. Docker and SELinux by Daniel Walsh from Red Hat

– Containers do not contain. Container는 namespace에 기반하는데, 리눅스에 namespace가 적용되어 있지 않은 부분이 있다. kernel file systems: /sys, /sys/fs, /proc/sys 등.
– Container를 사용하면 악성 코드가 더욱 직접적으로 커널에 접근할 수 있다.
– Container를 그냥 일반적인 서비스로 접근하는 것이 옳다.
– Container에 read-only로 마운트해서 어느 정도 문제를 완화했다. /sys, /proc/sys, /proc/sysrq-trigger, /proc/irq, /proc/bus를 read-only로 마운트하도록 함.
– Docker의 capability를 떨어뜨림으로서 위험성을 낮추었다.

docker capabilities.PNG

Advertisements
Tagged with: , , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

Recent Posts
누적 방문자 수
  • 117,843 hits
%d bloggers like this: