-
Hadoop Block 알아보기Hadoop 2023. 11. 27. 06:15728x90반응형
- 목차
함께 보면 좋은 글.
https://westlife0615.tistory.com/20
소개.
hdfs 의 block 에 대해서 알아보려고 합니다.
hdfs 는 하나의 파일을 작은 block 으로 나누어 block 단위의 저장을 합니다.
block 의 크기는 대개 128mb 사이즈를 가집니다.
그래서 1gb 의 파일 하나는 8개의 block 들로 나뉠 수 있습니다.
이렇게 파일로부터 생성된 block 들은 여러 datanode 에 저장됩니다.
가용성의 목적을 이루기 위해서 block 들은 최대한 다양한 datanode 로 분산되어 저장되게 됩니다.기본적으로 128MB 크기를 기준으로 하나의 파일이 여러 Block 들로 나뉘어집니다.
제일 마지막 Block 을 제외하고 나머지 Block 들은 모두 동일한 크기를 가지게 됩니다.
Block 생성해보기.
먼저 파일을 HDFS 에 생성하고, 어떻게 Block 으로 나뉘어지는지 살펴보겠습니다.
아래 글은 Docker 로 Hadoop 클러스터를 실행시키는 예시인데요.
해당 내용을 토대로 Hadoop 을 도커로 실행시키거나 다른 방식으로 하둡을 실행시키면 좋을 것 같습니다.
https://westlife0615.tistory.com/20
테스트를 위해서 파일을 생성해보겠습니다.
sh>> touch /tmp/test.txt sh>> echo aaa >> /tmp/test.txt
testNS 라는 이름의 네임스페이스를 생성합니다.hdfs dfs -mkdir /testNS/
그리고 test.txt 파일을 testNS 네임스페이스 하위에 생성합니다.
hdfs dfs -put /tmp/test.txt /testNS/
test.txt 를 testNS 네임스페이스 하위에 생성하게 되면 아래와 같이 1개의 Block 이 생성됨을 할 수 있습니다.
현재 dfs.replication 값이 1 이기 때문에 복제없이 1개의 Block 만이 생성됨을 확인할 수 있습니다.cat $HADOOP_CONF_DIR/hdfs-site.xml <configuration> <property><name>dfs.namenode.rpc-address</name><value>namenode:8020</value></property> <property><name>dfs.replication</name><value>1</value></property> </configuration>
그럼 또 다른 파일을 생성하는데, 이번에는 dfs.replication 값을 3으로 변경한 후에 파일을 생성해보겠습니다.
cat $HADOOP_CONF_DIR/hdfs-site.xml <configuration> <property><name>dfs.namenode.rpc-address</name><value>namenode:8020</value></property> <property><name>dfs.replication</name><value>3</value></property> </configuration>
hdfs dfs -put /tmp/test.txt /testNS/
아래와 같이 3개의 데이터노드에 복제되어 저장됩니다.
그리고 아래와 같은 명령어로 생성된 파일을 확인할 수 있습니다.hdfs dfs -ls /testNS/ Found 1 items -rw-r--r-- 3 hadoop supergroup 56 2023-11-05 02:10 /testNS/test.txt
Block 은 어디에 저장될까?
하나의 파일은 여러개의 block 으로 나뉘어집니다.
그리고 block 들은 복제를 거쳐 여러 데이터노드들로 분산되어 저장됩니다.
하나의 block 은 하나의 파일로 저장이 되는데요.
데이터노드 입장에서 파일이 쪼개진 block 이라기보단 하나의 온전한 파일입니다.
block 이라는 파일이 저장되는 위치는 다음과 같습니다.<property> <name>dfs.datanode.data.dir</name> <value>/path/to/directory1,/path/to/directory2</value> </property>
hdfs-site.xml 내부에 설정된 dfs.datanode.data.dir 로 설정된 위치 하위에 block 들이 저장됩니다.
만약 여러 개의 디스크가 사용된다면
dfs.datanode.data.dir 또한 comma 로 구분된 여러 값을 가질 수 있습니다.반응형'Hadoop' 카테고리의 다른 글
Hadoop DataNode 알아보기 (0) 2023.12.12 Hadoop fsimage 알아보기 (0) 2023.12.11 Hadoop Namespace 알아보기 (0) 2023.12.04 Hadoop Edit Log 알아보기 (0) 2023.12.04 [Hadoop] Docker 로 Hadoop Cluster 실행하기 ( docker-compose ) (0) 2021.12.15