Ⅰ. 서론
현재 차량 대기오염물질 배출량 통계는 각 연료별(가 솔린, 경유, LPG 등) 1리터당 연소 시 발생되는 각종 대기오염물질 배출량을 1일 전체 소비량에 산술적으로 곱한 것(※ 총량개념)으로 실제로 도로 위에서 운행되고 있는 차량들의 개별 정보들을 참조하지 않은 부정확한 정보이다.
또한, 차량 대기오염물질 배출량 정보는 환경엔지니어링, 기상, 교통환경, 의료 및 보건, 교통물류와 관련한 다양한 문제에 대해 해법을 제시해 줄 수 있는 필수정보를 포함하고 있다[1].
그럼에도 불구하고, 차량 배기가스 및 미세먼지 등 대기오염물질 배출의 시공간적 분석을 위한 국가 데이터는 물론 이들 데이터로부터 도출되는 정보를 효율적이고 장기적인 관리할 수 있는 빅데이터 관리체계가 전무한 상태이다.
따라서 본 논문에서는 플랫폼 운영기관 및 참여기업, 센터 등에서 생산·구축한 데이터의 수집 방안을 활용하여 빅데이터 환경에서 수집한 도로이동 오염원 대기환경 빅데이터를 저장하기 위해 오픈소스 기반 분산 파일 시스템인 하둡을 활용하여 데이터를 효율적으로 저장 및 관리 하기 위한 시스템을 개발한다.
Ⅱ. 본론
도로이동 오염원 대기환경 빅데이터를 효율적으로 저장하기 위한 빅데이터 저장 및 관리 시스템으로는 하둡 (Hadoop)을 이용한다. 하둡은 크게 두가지 기술인 데이터를 저장하기 위한 HDFS(Hadoop Distributed File System)와 병렬처리 기술인 Map-Reduce 두 가지로 구분된다. 본 논문에서는 빅데이터를 저장하는 시스템 구현을 위해 HDFS만 언급한다.
하둡은 Apache에서 개발된 오픈소스 기반의 분산 파일 시스템으로 오픈소스의 장점인 라이센스에 대한 비용부담이 적다. 또한, 시스템을 중단하지 않고, 장비의 추가가 용이한 Scale-Out 특징을 가지고 있다. 그리고 일부 장비에 장애가 발생하더라도 다른 노드에서 데이터를 또 저장하고 있기 때문에 Fault-Tolerance 장점이 있으며, 저렴한 비용으로 비용대비 빠른 데이터 처리가 가능하다[2].
하둡은 본래 데이터를 블록 단위로 나누고, 복제하여 저장하는 Replication 기법을 활용하였지만, 최근 하둡 3.0.0 버전부터는 데이터를 복제하는 기법이 아닌 Erasure Coding을 활용하여 Data Block과 Parity Block을 생성하면서 Replication에 비해 약 2배의 저장소 공간을 절약할 수 있는 방법도 최근에는 사용되고 있다[3].
다음 그림 1은 Hadoop의 HDFS를 완전 분산 모드로 구성하였을 때, 데이터를 분산 저장하는 모습을 보여준다[4].
그림 1. Replication 기반 HDFS 데이터 저장 과정
Fig. 1. HDFS Data storeage process
데이터가 저장되는 과정은 우선 클라이언트가 데이터를 HDFS에 저장하고자 명령을 내린다. 다음 순서에서 네임노드(NameNode)는 클라이언트가 입력한 데이터를 기본 설정값으로 지정된 128 메가바이트(Mega-Byte) 크기의 블록으로 나누게 된다. 하둡을 구성하면 초기 블록을 나눌 때 설정되어있는 값은 128 메가바이트이며, 사용자가 원하는 크기로 수정이 가능하다[5].
마지막으로 나누어진 블록을 기본 설정값으로 지정된 3개의 블록으로 복제하여 각 데이터노드(DataNode)에 분산 저장한다. 블록을 복제할 때 사용되는 설정값도 마찬가지로 사용자가 원하는 개수로 수정이 가능하다. 또한, 네임노드는 데이터노드에 저장된 데이터 및 블록의 메타데이터(MetaData)를 관리하며, 데이터노드에 하트비트(HeartBeat)를 3초마다 전송하여, 데이터노드의 정상/비정상 유무를 확인한다[6].
다음 표 1은 실제 본 연구에서 수집 및 저장한 데이터 종류를 보여준다.
표 1. 도로이동 오염원 대기환경 빅데이터 종류
Table 1. Big Data table on Emissions of Air Pollutants Emitted from Vehicles
매달 총 9개의 데이터가 수집되어 저장이 되고, 데이터는 15분, 1시간, 1일 간격으로 측정된 데이터로 이루어져 있다. 순서 1에 해당하는 지점별 차로별 차종별 15분 교통정보 데이터(NC_SPOT_TFCLNE_VHCTY _FIFTEEN_MNT_VMTC_INFO)의 데이터 컬럼명과 의미는 표 2에서 설명한다.
표 2. 도로이동 오염원 대기환경 빅데이터 구조
Table 2. Big Data structure on Emissions of Air Pollutants Emitted from Vehicles
PK_ID 컬럼은 수집된 데이터의 테이블 기본키 인덱스를 의미하며 ROAD_KND_CN 컬럼은 데이터를 제공한 기관을 의미한다. MESURE_DE 컬럼과 MESURE_HM 컬럼은 각각 데이터가 측정된 측정일과 측정 시간을 나타낸다. SPOT_ID 컬럼은 각 도로 지점의 ID를 의미하고, DRC_NO 컬럼은 도로의 차선 상□하행 여부를 나타낸다. TFCLNE_NO 컬럼은 차선 정보를 나타내며 1차선이면 1, 2차선이면 2의 값을 가진다. MESURE_SCTN_CN 컬럼은 측정된 도로의 구간을 나타낸다. LC_LC 컬럼은 측정된 장비의 위치 장비 이정을 나타내고 SLOPE_RT는 도로의 경사도, ADRES 컬럼은 지점의 주소를 나타낸다. ONE_CL_VE ~ TWELVE_CL_VE 컬럼은 측정된 차랑 종류의 1차종부터 12차종까지 차종별 차량의 평균속도를 의미하고, ONE_CL_CO ~ TWELVE_CL_CO 컬럼은 측정된 차랑 종류의 1 차종부터 12차종까지 차종별 차량 수를 의미한다. VHCLE_SM 컬럼과 AVRG_VE 컬럼은 측정된 각각 전체 차량 수와 전체 차량의 평균속도를 의미한다. CRDNT_LC_LA 컬럼과 CRDNT_LC_LO 컬럼은 각각 측정된 지점의 위도와 경도 정보를 나타낸다.
표1과 표2에서 언급한 도로이동 오염원 대기환경 빅데이터를 구현한 분산 파일 시스템인 하둡에 저장한다. 그림 2는 표 2에서 순서 1에 해당하는 차종별 15분 교통 정보 데이터를 저장할 때 명령어와 저장 후 확인하는 모습을 보여준다.
그림 2. 데이터 저장 결과
Fig. 2. Data storage confirm result
그림 2에서 hadoop fs –put 명령어를 통해 로컬에 있는 데이터 NC_SPOT_TFCLNE_VHCTY_FIFTEEN _MNT_VMTC_INFO_202008.csv 파일을 하둡의 분산파일 시스템의 루트(“/”) 아래로 저장한다. 그리고 두 번째에 hadoop fs –ls 명령어를 통해 저장한 데이터를 확인해보면 정상적으로 저장이 된 것을 확인할 수 있다.
이처럼 쉘 명령어를 통해 데이터를 확인할 수도 있지만, 하둡은 기본적으로 웹에서 대시보드 형태를 통해 저장된 데이터의 형식을 좀 더 직관적으로 볼 수 있는 기능도 지원하고 있다.
기본적으로 내장되어 있는 FireFox 웹 브라우저를 통해 하둡의 시스템 주소로 접근하여 상단 메뉴 중 Utilities -> File Broswer를 선택하면 그림 3과 같이 확인할 수 있다.
그림 3. 데이터 저장 결과(Web browser)
Fig. 3. Data storage confirm result(web browser)
쉘 명령어를 통해 저장했던 데이터가 HDFS내에 저장된 것은 확인할 수 있으며, Replication 기법을 활용하였기 때문에 데이터는 블록 단위로 나뉘어지고, 복제되어 저장되었을 것이다. 이를 확인하는 방법은 그림 3에 Name 컬럼에 지정된 파일명(파란색 글씨)을 클릭하면 블록의 개수와 어느 블록이 어느 노드에 저장되어있는지를 그림 4와 같이 확인할 수 있다.
그림 4. 웹 브라우저를 이용한 블록 메타데이터 정보
Fig. 4. block metadata information using web browser
그림 4는 현재 분산 파일 시스템에 저장되어있는 데이터의 0번째 블록이 hadoop-data1 노드와 hadoopdata2 노드에 저장되어 있다는 것을 보여준다. 또한, 블록의 ID와 블록의 Size도 동일하게 확인할 수 있다. 또한, hadoop fs -fsck 쉘 명령어를 통해서도 동일하게 데이터에 대한 블록 세부 정보를 그림 5와 같이 확인할 수 있다.
그림 5. 쉘 명령어를 이용한 전체 블록 정보
Fig. 5. total block information using shell commander
hadoop fs -fsck 쉘 명령어를 통해 저장했던 데이터를 확인하면, 총 데이터의 전체 크기를 의미하는 Total size와 총 블록의 개수를 의미하는 Total blocks와 복제될 개수를 의미하는 Default replication factor를 확인할 수 있다.
하둡에 저장되어있는 데이터를 읽기 위해서는 리눅스의 cat 명령어를 활용하여 hadoop fs –cat 쉘 명령어를 사용한다. 하둡에 저장했던 파일을 읽어오면, 물리적으로각 데이터 노드에 저장되어 있는 다수의 블록들을 하나로 합쳐 논리적으로 사용자에게 출력한다.
그림 6은 하둡에 저장되어 있는 데이터를 읽어오는 모습을 보여준다.
그림 6. 쉘 명령어를 이용한 데이터 검색
Fig. 6. data searching using shell commander
그림 6을 통해 저장했던 데이터를 hadoop fs –cat 쉘 명령어로 해당 파일을 읽어오면, 첫 줄에는 콤마(“,”) 를 기준으로 각 컬럼명을 보여주고, 다음 줄부터도 동일하게 콤마(“,”)를 기준으로 각 컬럼의 어떤 데이터가 저장 되어 있는지 값을 출력하여 보여준다.
Ⅲ. 결론
본 논문에서는 다른 기업과 기관 및 센터에서 생성되는 다양한 데이터의 수집 방안을 활용하여 빅데이터 환경에서 수집한 도로이동 오염원 대기환경 빅데이터를 저장하기 위해 오픈소스 기반 분산 파일 시스템인 하둡을 활용하여 데이터를 효율적으로 저장 및 관리 하기 위한 시스템을 개발하였다.
데이터를 저장할 때 블록 단위로 나뉘고, 복제하여 저장하기 때문에 저장소의 용량 면에서는 다소 일반적인 저장 방식에 비해서 더 많은 하드디스크 공간을 차지하지만, HDFS뿐만 아니라 Map-Reduce의 기능을 통해 병렬처리를 지원하기 때문에 데이터 처리에서도 효과적인 솔루션이라고 할 수 있다.
또한, 다른 노드 하나에서 장애가 발생하더라도 또 다른 노드에 복제되어 저장되어있는 블록을 이용하여 데이터를 복구할 수 있기 때문에 본 시스템에서 저장하는 큰 용량의 데이터를 매우 효율적으로 관리할 수 있다.
이와 같이 분산 파일 시스템을 활용하여 도로이동 오염원 대기환경 빅데이터를 관리하면, 기업 및 전 국민이 필요로 하는 도로이동오염원의 대기오염물질 배출량 빅데이터를 안정적으로 제공하여 활용성 극대화 및 부가가치를 제고할 수 있다. 또한, 타 분야의 다양한 데이터와의 융합을 통해서 부가가치 높은 새로운 빅데이터의 생성 및 서비스를 제공할 수 있다.
References
- Ji-Hwan Kim, "Domestic IP Environmental Trend Report - A Project to Build Big Data in Air Environment of Road Mobility Pollutants", KEITI, 2019.
- Dong-Jin Shin, Jong-Min Eun, Ho-Geun Lee, Myoung Gyun Lee, Jeong-Min Park, Jeong-Joon Kim, "Big Data-based Log Collection and Analysis in IoT Environments", Journal of Engineering and Applied Sciences, Vol. 13, No. 5, pp. 1064-1072, May 2018.
- Zhendong Cheng, Zhongzhi Luan, You Meng, Yijing Xu, Depei Qian, Alain Roy, Ning Zhang, Gang Guan, "ERMS: An Elastic Replication Management System for HDFS", IEEE International Conference on Cluster Computing Workshops, pp. 32-40, Sept 2012.
- Dong-Jin Shin, "A Study on Efficient Store and Recovery Technology to Reduce the Disk Loading of Distributed File System in Big Data Environment", Masters dissertation, Korea Polytechnic University, Korea, Gyeonggi-do, 2020.
- Jens Dittrich, Jorge-Arnulfo Quiane-Ruiz, "Efficient big data processing in Hadoop MapReduce", Journal of the VLDB Endowment, Vol. 5, No. 12, pp. 2014-2015, 2012. https://doi.org/10.14778/2367502.2367562
- Dong-Jin Shin, Seung-Yeon Hwang, Kwang-Jin Kwak, Kyoung-Won Park, Jeong-Min Park, Jeong-Joon Kim, "A study on the Recovery Techniques of Distributed File System in a Big Data Environment", 2019 IIBC Conference, pp. 83-86, 2019.