본문 바로가기

포스트464

[Hadoop] 하둡 클라이언트에서 커버로스(Kerberos) 인증 사용하기 - 여러 계정 인증 동시사용 (UserGroupInformation) 여러 사용자가 동시에 접근하는 하둡 클러스터를 서비스할 때, 데이터나 리소스에 대한 보안 강화를 위해 '커버로스(Kerberos)' 인증을 사용할 수 있다. 커버로스 인증을 사용하는 클러스터에 접근하려면 Principal과 Keytab 혹은 패스워드를 이용해 인증을 받고, 발급받은 커버로스 티켓을 이용해서 하둡을 사용하게 된다. HDFS 클라이언트가 네임노드 혹은 데이터 노드와 통신하면서 데이터를 받아오는 과정에서도 커버로스 인증을 사용할 수 있다. 하둡은 UserGroupInformation이라는 클래스를 이용해 커버로스 프로토콜을 사용할 수 있도록 프로그래머에게 편의를 제공한다. 메이븐 의존성 일단은 커버로스 인증을 사용하는 하둡 클라이언트를 테스트해보기 위해 다음 메이븐 의존성을 추가해보자. org.. 2021. 8. 8.
[Hadoop] TestDFSIO - 하둡 클러스터 성능 측정 도구 사용법 및 예제 구축한 하둡 클러스터의 입출력 성능을 측정하고 싶은 경우가 있다. 새로 구매한 서버들을 이용해서 클러스터를 구축했을 때 성능이 어느정도까지 뽑히는지 체크하거나 일정 수준 이상의 입출력 성능을 제공하기 위해서 어느정도의 장비를 투입해야하는지 가늠하기 위함이다. 하둡은 여러가지 클러스터 성능 측정 도구를 제공하고 있다. 그 중에 클러스터의 입출력 속도 측정을 위한 'TestDFSIO'라는 벤치마크 도구에 대한 사용법과 예제를 정리해보겠다. TestDFSIO란? 하둡 릴리즈의 'hadoop-mapreduce-client-jobclient-{버전}-tests.jar' 파일에 패키징되어 있는 TestDFSIO는 클러스터의 하둡 클러스터의 입출력 성능을 측정할 수 있는 도구다. 하둡 소스코드처럼 TestDFSIO .. 2021. 8. 8.
[Hadoop] HDFS, Yarn, MapReduce를 위한 유닛테스트 및 JUnit 사용법 및 예제 - MiniCluster 하둡 클러스터를 사용하는 클라이언트 프로그램을 작성하다보면 유닛테스트를 어떻게 해야하는지 고민이 생긴다. 유닛 테스트를 위한 테스트 클러스터를 별도로 구축해놓는 것도 이상하고, 실제 운영되는 클러스터에 유닛 테스트를 돌리는 것도 애매하다. 유닛 테스트는 대부분 간단한 동작만 테스트하는데 가벼운 방법이 필요하다. 다행히 하둡은 JUnit 같은 유닛 테스트 케이스 작성을 위한 '미니클러스터(Mini cluster)'를 제공한다. 하둡 클라이언트를 테스트하기위해 'MiniDFS', 'MiniYARN', 'MiniMR' 클러스터가 제공되며 이 포스트에서는 MiniDFS 클러스터를 이용해서 테스트케이스를 작성해보겠다. MiniCluster 의존성 설정 메이븐 프로젝트를 사용하는 경우 다음 의존성을 pom.xml .. 2021. 8. 8.
[Hadoop] 도커(Docker)로 하둡(Hadoop) 띄우기 하둠 HDFS 코드리뷰를 진행하면서 테스트용 클러스터를 만들 필요가 있었다. 실제 개발 장비에 설치되어 있는 하둡 클러스터를 이용해서 프로그램을 작성, 동작을 디버깅해볼 수도 있었지만 도커에 하둡을 띄워보면 어떨까하는 생각이 들어서 관련 자료를 찾아보며 정리를 했다. 하둡 도커 이미지 만들기 우선 하둡에 구동시킬 도커 이미지를 만들어보자. 우선 CentOS 이미지를 이용해 리눅스 컨테이너를 구동한다. docker run -it --name hadoop-base centos CentOS 컨테이너의 yum 패키지를 업데이트하고 필요한 라이브러리들을 설치한다. 필요한 라이브러리들은 다음 명령으로 설치할 수 있다. 이 과정에서 약간 시간이 걸린다. yum update yum install wget -y yum .. 2021. 8. 7.
[Linux] tmux 설치와 사용법 및 예제 정리 원격 서버에 접속해서 작업을 하다보면 터미널 화면을 분할해서 사용해야하는 경우가 많다. 특히 하나의 터미널 창에 여러개의 터미널 화면을 분할해서 사용하는 'Terminal multiplexer'라는 종류의 소프트웨어를 사용하면 터미널 환경에서의 생산성은 물론이고, 고수의 느낌을 조금이나마 풍길 수 있다. Terminal multiplexer 소프트웨어 중에 tmux라는 프로그램을 사용하고 있는데 설치 방법과 간략한 사용법을 정리해보았다. tmux 설치 tmux는 각 운영체제의 패키지 관리자를 이용해서 설치할 수 있다. 우선 macOS에서는 brew를 이용해 설치할 수 있다. $ brew install tmux 우분투 리눅스에서는 apt-get을 이용해서 설치할 수 있다. $ sudo apt-get ins.. 2021. 8. 7.
[Linux] 엣지 트리거(Edge Trigger, ET)와 레벨 트리거(Level Trigger, LT)의 차이점 시스템에서 특정 이벤트의 발생을 감지하기 위해서 트리거(Trigger)라는 개념을 사용한다. 트리거는 원래 전기전자에서 사용하는 개념이지만 시스템 프로그래밍에서도 비슷한 개념을 사용한다. 트리거는 '레벨 트리거(Level Trigger)'와 '엣지 트리거(Edge Trigger)'로 구분할 수 있다. 예를 들기 위해 0과 1의 값을 가질 수 있는 어떤 변수를 생각해보자. 어떤 시스템에서 이벤트를 감지할 수 있는 센서라고 생각해도 좋다. 이 변수는 조건에 따라 0이 되기도하고 1이되기도 한다. 이를 그래프로 그려보면 위 그림처럼 0과 1이 번갈아가면서 바뀌는 것처럼 그려볼 수 있다. 레벨 트리거(Level Trigger) 우선 레벨트리거는 상태 변수의 현재 상황을 기준으로 동작한다. 상태변수가 1인 경우를.. 2021. 8. 7.
[Linux] RAID 0, RAID 1, RAID 10, RAID 01 차이점 데이터를 저장하는 디스크는 언제든지 고장이 날 수 있다. 따라서 2차 저장장치인 디스크에 데이터를 저장했다고해서 영구적으로 데이터의 영속성이 보장되는 것은 아니다. 디스크에 저장된 데이터의 가용성을 확보하기 위해서 '레이드(RAID, Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks)' 구성을 사용하는 경우가 많다. 레이드는 그 구성 방법에 따라 RAID 0, RAID 1, RAID10, RAID 01 설정을 많이 사용한다. 레이드 뒤쪽에 오는 숫자가 직관적이지 않아서 어떻게 구성하는 방법인지 헷갈릴 때가 많다. 0과 1은 '스트라이핑(Striping)'과 '미러링(Mirroring)'을 의미하며 01을 SM으로 기억.. 2021. 8. 6.
[Linux] 디스크(Disk), 파티션(Partition)과 볼륨(Volume)의 차이 서버의 저장장치와 저장공간에 대한 모니터링을 진행하면 '디스크(Disk)', '파티션(Partition)', '볼륨(Volume)'이라는 단어를 자주 접하게 된다. 이 중 파티션(Partition)과 볼륨(Volume)이라는 단어는 많이 혼용되기도 하는데, 정확하게 이들이 어떻게 다른지 찾아서 정리해봤다. 디스크(Disk) 디스크는 일반적으로 서버에 장착되어 있는 물리적인 저장장치를 의미한다. 원래 디스크는 자기 물질이 발라져있어 데이터를 저장할 수 있는 디스크 플래터(Platter)와 데이터를 읽고 쓸 수 있는 디스크 헤더, 그리고 디스크 헤더를 특정 위치로 위치시키는데 사용되는 디스크 암(Arm)으로 구성되어 있는 하드디스크(HDD)를 의미한다. 하지만 최근에는 SSD나 플래시 메모리, RAM 디스크.. 2021. 8. 5.
[Linux] MIME Type이란 무엇인가? 웹 컨텐츠를 다루면 어떤 타입의 컨텐츠인지를 표시하기 위해 'MIME Type'이라는 용어를 사용한다. MIME은 'Multipurpose Internet Mail Extensions'의 약자로 파일 변환을 위한 포맷이다. 이름에서도 알 수 있듯이 MIME Type은 이메일에 첨부된 파일을 텍스트 형태로 변환해서 이메일과 함께 전송하기 위해 개발된 포맷이다. MIME이라는 이름의 Internet Mail Extension에서 본래의 의도를 알 수 있다. 하지만 최근에는 이메일 전송을 위한 용도뿐만 아니라 웹을 통해 전달되는 다양한 형태의 파일의 데이터 포맷을 표현하기 위해 사용되고 있따. IANA(Internet Assigned Numbers Authority)라는 인터넷 할당번호 관리기관에서는 다양한 .. 2021. 8. 4.