반응형

기타 75

Hadoop # org.apache.hadoop.hdfs.server.namenode.SafeModeException

상황 org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /user/hadoop/invertedindex_test_out. Name node is in safe mode. The reported blocks 3 has reached the threshold 0.9990 of total blocks 3. The minimum number of live datanodes is not required. In safe mode extension. Safe mode will be turned off automatically in 19 seconds. NamenodeHostName:localhost 분석 Hadoop은 비정상적 종료시 sa..

Hadoop # cannot find symbol.

상황 부트캠프 강의에서 설정해야한다는 부분들을 모두 설정해줬음에도 불구하고 ant로 빌드하는 도중에 이러한 에러가 떴다. 그래서 난 내가 어떤걸 실수한건 줄 알았다. 해결 그냥 import문제였다. 강의내용에 빠졌었다. 그래서 아래 내용을 java파일에 추가시켜주었다. import org.apache.hadoop.fs.FileSystem; 그런데 이번 기회에 cannot find symbol에러에 대해 좀 더 알 수 있어서 좋았다. 정말 다양한 이유로 해당 에러가 나오게되는데, 관련된 내용은 아래 링크에서 참고해보자. Cannot find symbol 원인 및 해결방법(Cannot resolve symbol, Symbol not found 등) Cannot find symbol 원인 및 해결방법(Cann..

StringTokenizer란?/charAt과 substring/offset이란?

StringTokenizer String을 tokens로 쪼개어주는 클래스다. charAt(인수) 인수번째의 문자를 읽는다. 예) "sohyun".charAt(2)의 결과는 h substring(시작인수, 마지막 인수-1) charAt과 달리 인수번째의 문자열을 읽는다. 예) "sohyun".substring(0, 2)의 결과는 so offset = 변위 일반적으로 동일 오브젝트 안에서 오브젝트 처음에서부터 주어진 요소(혹은 지점)까지의 변위차를 나타내는 정수형.저급 프로그래밍언어에서는 상대주소로 불리운다. 예) A = 'abcdef'라면, 'c'문자는 A시작점에서 2의 offset을 지닌다고 할 수 있다. 두 번째 주소를 만들기 위해 기준이 되는 주소에 더해진 값. 따라서 결과 주소가 다른 지점의 상대..

hadoop 정리

목표 병렬 분산 알고리즘 구현이 가능한 MapReduce 프레임워크를 이해한다. MapReduce 프레임워크를 사용할 수 있는 Hadoop설치 및 MapReduce 알고리즘 코드를 실행한다. Hadoop을 이용해 빅데이터 분석 및 처리용 MapReduce 알고리즘을 구현하는데 필요한 지식과 코딩 능력을 배양한다. Scale-out이 Scale-up보다 더 중요하다. Scale-out : 저렴한 서버들을 많이 이용하는 것. Scale-up : 고가의 서버들을 조금 이용하는 것. 데이터 중심(data-intensive) 어플리케이션 분야에서는 Scale-out을 선호함. 2배의 성능을 가진 비싼 컴퓨터 가격이 일반 컴퓨터 2대의 가격보다 훨씬 비싸기 때문! MapReduce 프레임워크 값싼 컴퓨터들로 클러스..

Hadoop # HDFS cluster 구성/Namenode와 Datanode

Hadoop 주요한 구성요소 MapReduce : 소프트웨어의 수행을 분산 HDFS : 데이터를 분산 HDFS Hadoop Distributed File System 파일을 여러 대의 컴퓨터에 나누어 저장. 각 파일은 여러 개의 순차적 블록으로 저장됨. 파일의 블록은 fault tolerance를 위해 여러 개로 복제되어 다양한 머신에 저장됨. [참고] fault tolerance 시스템을 구성하는 부품에서 결함 또는 고장이 발생해도 기능을 수행할 수 있는 것. HDFS cluster 구성방식 HDFS 클러스터는 마스터-슬레이브(master-slave) 패턴으로 동작. master인 하나의 네임노드(Namenode)와 slave인 여러 개의 데이터노드(Datanode)로 구성되어 있다. HDFS clie..

Hadoop # Call From ubuntu/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectionException: Connection refused

상황 Ubuntu를 VMware를 통해 켜자마자 바로 Terminal을 켜고 아래 코드로 HDFS를 건드려보았다. $ hdfs dfs -cat wordcount_test_out/part-r-00000|more 그랬더니 아래와 같은 커넥션 에러가 떴다. cat: Call From ubuntu/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectionException: Connection refused 해결 dfs deamon을 실행시키지 않아서 생긴 문제였다. 아래 코드로 켜주자. 😂 $ start-dfs.sh

Hadoop # Found a swap file by the name ".Wordcount.java.swp"

상황 어느날 Wordcount.java를 실행시키니 아래와 같은 안내문을 받을 수 있었다. 분석 내가 Wordcount.java파일을 수정하다가 Terminal을 강제 종료하였거나하였을 때 자체적으로 .Wordcount.java.swp이란 파일을 생성해둔다고 한다. 그래서 내가 이전에 수정하던 내용을 그대로 이어나가고 싶지 않다면 E를 눌러주면 된다. 그러나 문제는 매번 Wordcount.java를 켤 때 마다 다시 물어본다는 것이다. 해결 귀찮으니까 그냥 .Wordcount.java.swp을 삭제해버리자. $ rm .Wordcount.java.swp

Hadoop # Datanode 삭제되었을 때 해결방법

상황 아래 명령어를 실행했으나 아무런 결과값이 반환되지 않았다. $ hdfs dfs -cat wordcount_test_out/part-r-00000|more 원인 아래 명령어를 통해 확인해본 결과 DataNode가 존재하지 않았다. $ jps 해결 우선 서버를 종료하자. $ stop-dfs.sh hdfs가 사용하는 folder를 삭제해주자. 다시 만들어주게! rm -rf ~/hadoop_tmp hdfs가 사용할 폴더를 다시 생성 $ mkdir hadoop_tmp hdfs를 포맷해주자. $ hadoop namenode -format 서버를 다시 켜주자. $ start-dfs.sh hadoop user가 사용할 폴더를 다시 생성해주자. $ hdfs dfs -mkdir -p /user/hadoop 혹은 $ ..

Hadoop # mkdir: `hdfs://localhost:9000/user/hadoop': No such file or directory

상황 하둡의 HDFS에 wordcount_test라는 디렉토리를 생성하라는 명령어를 입력해주었더니 위 에러를 뱉었다. mkdir는 디렉토리를 생성해달라는 명령어인데 왜 이러한 파일 혹은 디렉토리가 없다고 하지? 싶었다. 그런데 원인은 상위 디렉토리도 아직 없는데 하위 디렉토리를 바로 생성해주려 했기 때문이다. 해결 상위 디렉토리를 먼저 만들어주기 전 해당 폴더에 아무 디렉터리가 없는지 확인하자. $ hdfs dfs -ls HDFS에 최상위 폴더인 user를 생성해주자. $ hdfs dfs -mkdir /user HDFS의 user폴더 안에 hadoop폴더를 생성해주자. 이제 hadoop의 폴더에 새로운 디렉토리를 생성할 준비가 되었다. $ hdfs dfs -mkdir /user/hadoop 실패했었던 하..

ssh localhost 오류 # ssh: connect to host localhost port 22: Connection refused

상황 아래 명령어는 SSH server가 잘 설치되어있는지 알아볼 수 있는 명령어다. 기본적으로는 시스템 자체에 원격접속을 시작할 수 있는 명령어다. $ ssh localhost 분석 이 에러를 얻었을 때의 의미는 SSH server 패키지가 시스템에 설치가 되어있지 않거나 서비스가 그저 현재 활성화되지 않았을 때이다. SSH service를 체크해보자.(나의 경우엔 1번 문제였다.) $ systemctl status sshd openssh-server패키지를 설치하자. $ sudo apt-get install openssh-server 다시 SSH service를 체크해보니 active된 것을 볼 수 있다. 그리고 이제 다시 시스템 자체에 원격접속을 시작할 수 있는 명령어를 입력해보니 다음의 질문을 했..

반응형