- WordCount 실습해보기
1. conf/core-site.xml을 수정한다.
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>[경로 설정]</value>
#경로 설정 부분은 접근 설정이 가능한 권한을 부여해줘야 한다.
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
===============================================================
2. Hadoop에서 예제로 사용할 파일을 복사한다.
> cd $HADOOP_HOME | HADOOP_HOME으로 이동한다 |
> hadoop fs -mkdir /input | input 폴더를 생성한다 |
> hadoop fs -copyFromLocal README.txt /input | HADOOP_HOME 내부에 README.txt파일을 input폴더 내부로 복사한다 |
> hadoop fs -ls /input | input폴더 내부를 확인해본다 |
3. 복사한 파일의 word를 count한다.
> hadoop jar hadoop-example-1.0.3.jar wordcount /input/README.txt /output | hadoop-example-1.0.3.jar에 있는 wordcount를 이용하여 /input/README.txt파일을 카운트한다. 그리고 /output폴더에 결과를 출력해준다. |
> hadoop fs -cat /output/part-r-00000|more | 출력된 결과를 확인해본다. |
- Error 내용 정리
: 직접 경험한 에러 내용만 정리- NameNode 생성이 되지 않음 : core-site.xml 파일을 확인한다.
- NullPointException Error
- hadoop 임시 폴더로 지정한 폴더 삭제, namenode 포맷 후 다시 진행한다.
- JAVA_HOME is not set
- conf/hadoop-env.sh 파일 내용 수정================================================================
> sudo nano hadooop-env.sh
(생략)
#현재 설치된 자바의 홈을 지정해준다.
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
(생략)
================================================================
- Hadoop 명령어 간단 정리
FORM> hadoop fs -[command]
[정보/출력]
ls : 현재 디렉토리 정보를 나열한다.
lsr : 현재 디렉토리 목록과 하위디렉토리 정보를 나열한다.
du : 디렉토리나 파일의 사용량을 확인하는 명령 바이트 단위로 결과 출력한다.
dus : 디렉토리 전체의 합계용량을 출력한다.
cat : 테스트파일의 내용을 표시한다.
text : 테스트파일뿐 아니라 zip파일 형태의 내용도 표시한다.
tail : 파일의 마지막 1kb의 내용을 화면에 출력한다.(로그파일의 마지막라인 확인)
count : 지정경로에 대한 파일갯수 디렉토리갯수 전체파일사이즈를 출력한다.
-q옵션을 사용할 경우 디렉토리의 파일 용량제한 정보를 조회할 수 있습니다.
[생성]
mkdir : 디렉토리를 생성한다.
touchz : 0바이트 파일을 생성합니다.
[삭제]
rm : hdfs 디렉토리나 파일을 삭제한다.
디렉토리는 반드시 비어있는 경우만 삭제할 수 있다.
rmr : 비어있지 않은 디렉토리는 rmr로 삭제할 수 있다.
[이동/복사]
mv : hdfs의 파일이나 디렉토리를 이동 합니다.
cp : hdfs간에 소스디렉토리 및 파일을 목적지로 복사한다.
(목적지 디렉토리가 없을 경우엔 디렉토리를 생성)
put : 로컬의 파일 및 디렉토리를 목적지 경로로 복사한다.
get : hdfs의 파일 및 디렉토리를 로컬의 목적지로 복사한다.
[변경]
(-R옵션을 주면 해당 디렉토리에 포함된 파일이나 디렉토리까지 변경)
chmod : 지정한 파일이나 디렉토리에 대해 권한을 변경합니다.
chown : 지정한 파일이나 디렉토리의 소유권을 변경합니다.
- WordCount for Java
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class WordCount {
public static void main(String[] args) {
TreeMap<String, Integer> data = new TreeMap<String, Integer>();
Mread(data);
MprintCNT(data);
}
public static int MCount(String word, TreeMap<String, Integer> data) {
if (data.containsKey(word)) {
return data.get(word);
} else {
return 0;
}
}
public static void MprintCNT(TreeMap<String, Integer> data) {
for (String word : data.keySet()) {
System.out.println("단어(" + word + ") : 카운트 숫자(" + data.get(word)
+ ")");
}
}
public static void Mread(TreeMap<String, Integer> data) {
Scanner sc = null;
String word = null;
int count = 0;
String path = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
try {
System.out.print("읽고 싶은 파일의 경로를 입력하세요 : ");
path = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
sc = new Scanner(new FileReader(path));
while (sc.hasNext()) {
word = sc.next();
count = MCount(word, data) + 1;
data.put(word, count);
}
} catch (FileNotFoundException e) {
System.err.println(e);
return;
} finally {
sc.close();
}
}
}
댓글 없음:
댓글 쓰기