본문 바로가기

Old Posts226

[Hadoop] 하둡 스트리밍(Hadoop Streaming)이란? 하둡 스트리밍(Hadoop Streaming)은 하둡과 함께 배포되는 유틸리티다. 하둡에서 MapReduce(이하 MR) 작업을 실행하기 위해서는 기본적으로 자바 언어를 이용해야 한다. 하지만 하둡은 하둡 스트리밍을 통해서 자바 이외에 파이썬이나 루비, Bash 스크립트 등으로도 MR 작업을 생성하고 실행할 수 있게 해준다. 하둡 스트리밍 동작 방식 하둡 스트리밍은 유닉스 스트림을 이용해 자바가 아닌 프로그램 혹은 스크립트가 MR 작업으로 동작하도록 해준다. 즉, 표준입력(stdin)과 표준출력(stdout)을 통해 입출력을 하는 프로그램과 스크립트는 하둡 스트리밍을 통해 MR의 Mapper 혹은 Reducer로 사용할 수 있다. 하둡 스트리밍은 다음과 같이 동작한다. 하둡 스트리밍 유틸리티는 Mappe.. 2022. 8. 2.
[Maven] Maven으로 테스트 케이스 실행하는 방법 메이븐 프로젝트에 정의되어 있는 테스트 케이스는 다음 명령으로 실행할 수 있다. $ mvn test 메이븐의 test 페이즈를 이용해 target/test-classes에 컴파일 되어 있는 Unit 테스트 클래스들을 실행하고, 실행 결과물을 target/surefire-reports 디렉토리에 생성한다. 만약 전체 테스트의 실행 대신 일부 테스트 파일에 있는 테스트 케이스들을 테스트해보고 싶으면 다음과 같이 실행하면 된다. $ mvn -Dtest=테스트클래스 test $ mvn -Dtest=테스트클래스1,테스트클래스2 test 이렇게 실행하면 테스트클래스에 정의되어 있는 테스트 케이스들만 실행한다. 프로젝트 전체 테스트 케이스 중 일부가 실패해서 반복적으로 실행해야할 경우 유용하다. 만약 특정 테스트클래.. 2022. 7. 25.
[Linux] tcpdump 명령어 사용방법 tcpdump는 리눅스나 유닉스 계열 운영체제에서 네트워크 인터페이스를 통해 송수신되는 패킷의 정보를 출력해주는 프로그램이다. 특정 서버 장비에서 비정상적인 네트워크 입출력이 감지된 경우 문제의 원인을 파악하기 위해 tcpdump를 이용하면 된다. tcpdump는 libpcap 라이브러리를 이용해서 패킷을 캡쳐하고 확인된 정보를 파일로 저장한다. 따라서 확인된 정보를 wireshark 같은 분석 도구를 이용해 확인 할 수도 있다. tcpdump 설치 tcpdump는 yum을 통해 설치할 수 있다. $ sudo yum install tcpdump tcpdump 옵션 옵션 설명 -c 지정한 수 만큼 패킷을 수신 -i 지정한 인터페이스를 통하는 패킷들의 내역을 출력 -w 캡쳐한 패킷의 정보를 지정한 파일에 바.. 2022. 6. 17.
[Linux] ssh 터널링(ssh port forwarding) - Local / Remote / Dynamic Tunneling sh는 Secure SHell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다. 당연하게도 ssh는 원격 호스트로 접속하기 위해 가장 많이 사용된다. 그런데 ssh는 원격 호스트로의 접속과 더불어 ‘SSH Tunneling’ 혹은 ‘ssh port forwarding’이라는 재미있는 기능을 제공한다. SSH Tunneling(SSH Port Forwarding) 편의상 이후에는 그냥 SSH 터널링이라고 부르겠다. SSH 터널링은 프록시와 비슷한 역할을 한다. SSH 터널링을 사용할 수 있는 상황에 대한 예를 들어보겠다. Host A에서 Host B로 접근할 일을 생각해보자. Host A에 있는 어떤 앱의 클라이언트는 Host B에 있는 서버에 접속해야한다. 하지만 언제나 그렇듯 보안상 .. 2022. 6. 7.
[Linux] sar 명령어 사용법 - 디스크 IO 모니터링 sar 명령어는 System Activity Report의 약자로 시스템의 CPU, 메모리, 입출력 사용량 정보를 수집하고 리포팅하는 명령어다. 시스템의 리소스 사용 이력을 모니터링하고 파일에 저장한 후 리포팅 할 때 많이 사용한다. sar 설치 sar는 sysstat 패키지를 통해 설치할 수 있다. sysstat 패키지에는 sar를 비롯해 iostat, pidstat, mpstat 명령어가 포함되어 있다. $ sudo apt install sysstat $ sudo yum install sysstat sar 명령어 사용법 sar 명령어는 다음과 같은 문법으로 사용한다 $ sar [옵션] [인터벌] [횟수] 인터벌과 횟수 정보를 입력하지 않으면 시스템에서 기본적으로 수집하고 있는 지표를 보여준다. $ s.. 2022. 6. 5.
[Linux] iotop 명령어 사용법 - 디스크 사용량 모니터링 리눅스 시스템에서 디스크 입출력을 어떤 프로세스가 많이 유발하는지 모니터링해야 할 경우가 있다. 이 때, iotop 명령어를 사용하면 된다. iotop 설치 $ sudo yum install iotop iotop 명령어 사용법 iotop 명령어는보안 문제때문에 root 권한 혹은 NET_ADMIN capability를 필요로 한다. top 명령어를 실행하면 각 프로세스의 CPU 사용량과 메모리 사용량을 모니터링할 수 있는 것처럼 iotop 명령어를 실행하면 각 프로세스들의 디스크 입출력 정보를 모니터링할 수 있다. $ sudo iotop Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s Current DISK READ: 0.00 B/s | Current D.. 2022. 6. 4.
[Linux] apt와 apt-get 차이점 apt는 Advanced Packaging Tool의 약자로 우분투 같은 데비안 계열의 리눅스에서 사용하는 패키지 관리자다. 우분투 같은 데비안 계열의 리눅스에서 패키지를 설치할 때 apt install 혹은 apt-get install 을 사용한다. 어떤 글에서는 apt install을 사용하도록 설명되어 있고, 또 다른 글에서는 apt-get install을 사용하라고 설명되어 있다. apt와 apt-get은 어떤 차이일까? apt vs. apt-get 결론적으로 말하면 apt와 apt-get은 큰 차이가 없다. 그냥 내키는 대로 사용하면 된다. 원래 우분투를 비롯한 데비안 계열의 리눅스에서는 apt-get이나 apt-cache 같은 툴이 사용되어왔다. 오랜기간 사용되다보니 다양한 기능들이 추가되어 .. 2022. 6. 2.
[Linux] CentOS Failed to download metadata for repo ‘appstream’ 해결방법 CentOS에서 패키지 관리자인 yum이나 dnf를 사용하다가 'Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist'를 만나게 되는 경우가 있다. $ sudo yum update -y CentOS Linux 8 - AppStream 35 B/s | 38 B 00:01 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist CentOS를 위한 패키지 저장소의 주소가 잘 못되었거나 주소에 접속할 수 없기 때문.. 2022. 5. 26.
[Java] ConcurrentModificationException 원인과 해결방법 자바 언어로 프로그래밍을 하다보면 가끔씩 ConcurrentModificationException을 만나게 된다. ConcurrentModificationException의 발생 원인과 해결방법에 대해서 간단하게 소개하겠다. ConcurrentModificationException ConcurrentModificationException은 몇 가지 상황에서 발생할 수 있는데, 가장 흔한 것이 컬렉션을 순회하면서 순회하는 대상 컬렉션에 수정을 가하는 경우다. 다음 코드를 실행하면 ConcurrentModificationException이 발생한다. List list = new ArrayList(); list.add("str1"); list.add("str2"); list.add("str3"); for (S.. 2022. 5. 26.