Hadoop의 HDFS 학습
17558 단어 데이터 발굴
실험 환경
서버 목록
서버 용도
IP 주소
호스트 이름
NameNode
192.168.3.69
namenode.abc.local
DataNode 1
192.168.3.70
datanode1.abc.local
DataNode 2
192.168.3.71
datanode2.abc.local
환경 준비
세 서버 모두 CentOS 6.6 설치를 최소화하고 호스트 이름, 정적 IP 주소를 설정합니다.
CentOS 6.6은 설치를 최소화합니다. 기본적으로 Java 환경이 없으므로 Java 환경을 설치해야 합니다.
Java 실행 환경의 설치 미디어 다운로드: jre-7u80-linux-x64.tar.gz
# tar xvfz jre-7u80-linux-x64.tar.gz
# mv jre1.7.0_80/ /opt
/etc/profile에서 Java 환경 변수 설정
export JAVA_HOME=/opt/jre1.7.0_80
PATH=$JAVA_HOME/bin:$PATH
export PATH
콘솔을 종료하고 서버에 다시 로그인하여 Java 운영 환경 보기
[root@namenode ~]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
다른 두 서버에도 Java 운영 환경을 설치합니다.
세 서버 간 SSH 암호 없는 로그인 설정
CentOS 최소화 설치는 scp와 ssh 클라이언트 프로그램을 설치하지 않았습니다.rpm 패키지를 통해 다음과 같이 설치합니다.
# rpm -ivh libedit-2.11-4.20080712cvs.1.el6.x86_64.rpm
# rpm -ivh openssh-clients-5.3p1-104.el6.x86_64.rpm
libedit openssh
참고: SSH 서비스를 통해 리눅스 서버에 원격으로 액세스할 때 연결이 매우 느리므로 SSH의 DNS 반해상도를 해제하고 다음 줄을 추가해야 합니다.
UseDNS no
구성 파일에 [UseDNS yes]가 주석으로 표시되지만 기본 스위치는 yes입니다.(SSH 서비스는 기본적으로 DNS 역방향 분석 기능을 사용합니다.)
또한 SSH 클라이언트에서 로컬 DNS 해석을 설정하고/etc/hosts 파일을 편집하여 다음 구성을 추가합니다.
192.168.3.69 namenode namenode.abc.local
192.168.3.70 datanode1 datanode1.abc.local
192.168.3.71 datanode2 datanode2.abc.local
주: 이 컴퓨터에openssh-clients를 설치한 후 scp를 이용하여 로컬 파일을 원격으로 전송하려고 합니다. 이때 오류가 발생했습니다. - bash: scp:command not found.원격에서도openssh-client를 설치해야 하고 scp 프로그램이 있어야 하기 때문이다.
namenode에서 조작하여 이 컴퓨터의 공개 키, 암호 파일을 생성합니다.
[root@namenode ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): # Enter,
Enter same passphrase again: # Enter,
Your identification has been saved in /root/.ssh/id_rsa. #
Your public key has been saved in /root/.ssh/id_rsa.pub. #
The key fingerprint is:
02:e0:5b:d0:53:19:25:48:e2:61:5a:a3:14:9e:d0:a6 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|.+Xo.o++. |
|+B+*+ .. |
|o=o o. |
|E o . |
| . . S |
| . |
| |
| |
| |
+-----------------+
이 컴퓨터에서 ssh 로그인을 실현하려면 비밀번호가 필요 없습니다
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
authorized_keys , ssh
SSH 서비스의 구성 파일 수정/etc/ssh/sshd_config.
RSAAuthentication yes # , RAS
PubkeyAuthentication yes #
AuthorizedKeysFile .ssh/authorized_keys #
SSH 서비스를 다시 시작합니다.
/etc/init.d/sshd restart
원격 로그인을 실현하려면 비밀번호가 필요 없습니다. 공개 키 파일을datanode1에 업로드하고namenode의/root/.ssh/id_rsa.pub를 datanode1의/tmp 디렉터리에 업로드합니다.
# scp /root/.ssh/id_rsa.pub [email protected]:/tmp
, ssh , , 。
datanode1에서 namenode의 공개 키를 SSH 인증 파일에 가져옵니다.
[root@datanode1 ~]# cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
authorized_keys , ssh
datanode1의 SSH 서비스 프로필 수정/etc/ssh/sshd_config.
RSAAuthentication yes # , RAS
PubkeyAuthentication yes #
AuthorizedKeysFile .ssh/authorized_keys #
SSH 서비스를 다시 시작합니다.
/etc/init.d/sshd restart
namenode에서 ssh 암호 없는 로그인 검증
[root@namenode ~]# ssh [email protected]
The authenticity of host '192.168.3.70 (192.168.3.70)' can't be established.
RSA key fingerprint is c4:1f:56:68:f8:44:c7:d9:cc:97:b9:47:1c:37:bb:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.70' (RSA) to the list of known hosts.
Last login: Mon Aug 10 18:47:02 2015 from 192.168.3.64
[root@datanode1 ~]#
namenode의 공개 키 파일을 datanode2에 업로드한 후 같은 동작을 합니다.
마찬가지로,datanode1의 키도namenode,datanode2에,datanode2의 키도namenode,datanode1에 올려야 한다.세 서버 사이에는 ssh가 비밀번호 없이 로그인할 수 있어야 한다.
Hadoop 설치
Hadoop의 설치 미디어 다운로드:hadoop-2.7.1.tar.gz. namenode에 업로드하고/opt 디렉터리에 압축 풀기
# tar xvfz hadoop-2.7.1.tar.gz -C /opt/
/opt/hadoop-2.7.1 디렉터리에 데이터를 저장하는 폴더를 만듭니다. tmp,hdfs,hdfs/data,hdfs/name.
[root@namenode hadoop-2.7.1]# mkdir tmp
[root@namenode hadoop-2.7.1]# mkdir hdfs
[root@namenode hadoop-2.7.1]# cd hdfs/
[root@namenode hdfs]# mkdir data
[root@namenode hdfs]# mkdir name
hadoop의 운행 환경 설정/opt/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/opt/jre1.7.0_80
namenode의 실행 매개 변수 /opt /hadoop-2.7.1 / etc /hadoop /core-site를 설정합니다.xml
fs.defaultFS
hdfs://namenode.abc.local:9000
hadoop.tmp.dir
file:/opt/hadoop-2.7.1/tmp
io.file.buffer.size
131702
fs.defaultFS가 NameNode로 설정된 URI, io.file.buffer.size 는 순서 파일에서 읽기와 쓰기의 캐시 크기로 설정됩니다.
hdfs의 운행 매개 변수 /opt/hadoop-2.7.1 / etc/hadoop/hdfs-site를 설정합니다.xml
dfs.namenode.name.dir
file:/opt/hadoop-2.7.1/hdfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.7.1/hdfs/data
dfs.replication
2
dfs.webhdfs.enabled
true
dfs.namenode.secondary.http-address
datanode1.abc.local:9000
namenode의hdfs-site.xml은 dfs를webhdfs.enabled 속성은true로 설정됩니다. 그렇지 않으면 웹 hdfs의 LIST STATUS, LIST FILE STATUS 등 파일, 폴더 상태를 표시하는 명령을 사용할 수 없습니다. 이 정보는namenode에서 저장하기 때문입니다.hadoop 2.7.1은namenode 단점 고장 문제를 해결했습니다. 두 번째namenode를 설정해야 합니다. dfs를 통해.namenode.secondary.http-address를 설정합니다.
mapred의 운행 매개 변수 /opt /hadoop-2.7.1 / etc /hadoop /mapred-site를 설정합니다.xml
mapreduce.framework.name
yarn
yarn의 운행 매개 변수 /opt/hadoop-2.7.1/etc/hadoop/yarn-site를 설정합니다.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
namenode.abc.local
Datanode에hadoop 설치
scp 도구를 통해namenode의hadoop을datanode에 업로드합니다.
# cd /opt/
# scp -r hadoop-2.7.1 [email protected]:/opt/
# scp -r hadoop-2.7.1 [email protected]:/opt/
hadoop을 시작하는hdfs 환경
namenode에서hadoop 명령을 실행합니다
# cd /opt/hadoop-2.7.1/sbin
# ./start-dfs.sh
15/08/12 03:15:16 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [namenode.abc.local]
namenode.abc.local: starting namenode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-namenode-namenode.abc.local.out
datanode2.abc.local: starting datanode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-datanode-datanode2.abc.local.out
datanode1.abc.local: starting datanode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-datanode-datanode1.abc.local.out
Starting secondary namenodes [datanode1.abc.local]
datanode1.abc.local: starting secondarynamenode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-secondarynamenode-datanode1.abc.local.out
15/08/12 03:15:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HDFS 작업
HDFS 포맷
명령을 집행하다
# cd /opt/hadoop-2.7.1/bin
# ./hdfs namenode -format
..........................
15/08/12 03:48:58 INFO namenode.FSImage: Allocated new BlockPoolId: BP-486254444-192.168.3.69-1439322538827
15/08/12 03:48:59 INFO common.Storage: Storage directory **/opt/hadoop-2.7.1/hdfs/name** has been successfully formatted.
15/08/12 03:48:59 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
15/08/12 03:48:59 INFO util.ExitUtil: Exiting with status 0
15/08/12 03:48:59 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at namenode.abc.local/192.168.3.69
************************************************************/
namenode hadoop , datanode1,datanode2 hadoop 。 stop-dfs.sh datanode 。
명령을 실행한 후namenode의/opt/hadoop-2.7.1/hdfs/name 디렉터리에서 파일을 생성합니다.
[root@namenode name]# tree
.
└── current
├── fsimage_0000000000000000000
├── fsimage_0000000000000000000.md5
├── seen_txid
└── VERSION
hdfs 시스템을 다시 시작합니다.
namenode의/opt/hadoop-2.7.1/hdfs/name 디렉터리에서 파일 보기
[root@namenode name]# tree
.
├── current
│ ├── edits_0000000000000000001-0000000000000000002
│ ├── edits_0000000000000000003-0000000000000000004
│ ├── edits_0000000000000000005-0000000000000000006
│ ├── edits_0000000000000000007-0000000000000000008
│ ├── edits_0000000000000000009-0000000000000000010
│ ├── edits_0000000000000000011-0000000000000000012
│ ├── edits_0000000000000000013-0000000000000000014
│ ├── edits_0000000000000000015-0000000000000000016
│ ├── edits_0000000000000000017-0000000000000000018
│ ├── edits_0000000000000000019-0000000000000000020
│ ├── edits_0000000000000000021-0000000000000000022
│ ├── edits_0000000000000000023-0000000000000000024
│ ├── edits_0000000000000000025-0000000000000000026
│ ├── edits_0000000000000000027-0000000000000000028
│ ├── edits_0000000000000000029-0000000000000000030
│ ├── edits_0000000000000000031-0000000000000000032
│ ├── edits_0000000000000000033-0000000000000000034
│ ├── edits_0000000000000000035-0000000000000000036
│ ├── edits_0000000000000000037-0000000000000000038
│ ├── edits_0000000000000000039-0000000000000000040
│ ├── edits_0000000000000000041-0000000000000000042
│ ├── edits_0000000000000000043-0000000000000000044
│ ├── edits_0000000000000000045-0000000000000000046
│ ├── edits_0000000000000000047-0000000000000000047
│ ├── edits_inprogress_0000000000000000048
│ ├── fsimage_0000000000000000046
│ ├── fsimage_0000000000000000046.md5
│ ├── fsimage_0000000000000000047
│ ├── fsimage_0000000000000000047.md5
│ ├── seen_txid
│ └── VERSION
└── in_use.lock # , NameNode
datanode1, datanode2의/opt/hadoop-2.7.1/hdfs/data 디렉터리에서 파일을 보십시오.
[root@datanode1 data]# tree
.
├── current
│ ├── BP-486254444-192.168.3.69-1439322538827
│ │ ├── current
│ │ │ ├── dfsUsed
│ │ │ ├── finalized
│ │ │ ├── rbw
│ │ │ └── VERSION
│ │ ├── scanner.cursor
│ │ └── tmp
│ └── VERSION
└── in_use.lock # , DataNode
datanode1이 두 번째namenode로 설정되어 있기 때문에/opt/hadoop-2.7.1/tmp 디렉터리에서 파일을 생성합니다.
[root@datanode1 tmp]# tree
.
└── dfs
└── namesecondary
├── current
│ ├── edits_0000000000000000001-0000000000000000002
│ ├── edits_0000000000000000003-0000000000000000004
│ ├── edits_0000000000000000005-0000000000000000006
│ ├── edits_0000000000000000007-0000000000000000008
│ ├── edits_0000000000000000009-0000000000000000010
│ ├── edits_0000000000000000011-0000000000000000012
│ ├── edits_0000000000000000013-0000000000000000014
│ ├── edits_0000000000000000015-0000000000000000016
│ ├── edits_0000000000000000017-0000000000000000018
│ ├── edits_0000000000000000019-0000000000000000020
│ ├── edits_0000000000000000021-0000000000000000022
│ ├── edits_0000000000000000023-0000000000000000024
│ ├── edits_0000000000000000025-0000000000000000026
│ ├── edits_0000000000000000027-0000000000000000028
│ ├── edits_0000000000000000029-0000000000000000030
│ ├── edits_0000000000000000031-0000000000000000032
│ ├── edits_0000000000000000033-0000000000000000034
│ ├── edits_0000000000000000035-0000000000000000036
│ ├── edits_0000000000000000037-0000000000000000038
│ ├── edits_0000000000000000039-0000000000000000040
│ ├── edits_0000000000000000041-0000000000000000042
│ ├── edits_0000000000000000043-0000000000000000044
│ ├── edits_0000000000000000045-0000000000000000046
│ ├── edits_0000000000000000048-0000000000000000049
│ ├── fsimage_0000000000000000047
│ ├── fsimage_0000000000000000047.md5
│ ├── fsimage_0000000000000000049
│ ├── fsimage_0000000000000000049.md5
│ └── VERSION
└── in_use.lock
HDFS에 파일 넣기
새 테스트 파일
# mkdir -p /root/input_data
# cd /root/input_data/
# echo "This is a test." >> test_data.txt
hadoop 명령을 실행하여 파일을 넣습니다.
# cd /opt/hadoop-2.7.1/bin/
# ./hadoop fs -put /root/input_data/ /input_data
15/08/13 03:16:20 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
/root/input_데이터 디렉토리에 있는 파일, HDFS로 복사된/input_데이터 디렉토리 아래
hadoop 명령을 실행하고 파일 보기
# ./hadoop fs -ls /input_data
15/08/13 03:20:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 1 items
-rw-r--r-- 2 root supergroup 16 2015-08-13 03:20 /input_data/test_data.txt
HDFS용 작업 명령
# ./hadoop fs
Usage: hadoop fs [generic options]
[-appendToFile ... ]
[-cat [-ignoreCrc] ...]
[-checksum ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] ... ]
[-copyToLocal [-p] [-ignoreCrc] [-crc] ... ]
[-count [-q] [-h] ...]
[-cp [-f] [-p | -p[topax]] ... ]
[-createSnapshot []]
[-deleteSnapshot ]
[-df [-h] [ ...]]
[-du [-s] [-h] ...]
[-expunge]
[-find ... ...]
[-get [-p] [-ignoreCrc] [-crc] ... ]
[-getfacl [-R] ]
[-getfattr [-R] {-n name | -d} [-e en] ]
[-getmerge [-nl] ]
[-help [cmd ...]]
**[-ls [-d] [-h] [-R] [ ...]]**
[-mkdir [-p] ...]
[-moveFromLocal ... ]
[-moveToLocal ]
[-mv ... ]
**[-put [-f] [-p] [-l] ... ]**
[-renameSnapshot ]
**[-rm [-f] [-r|-R] [-skipTrash] ...]**
[-rmdir [--ignore-fail-on-non-empty] ...]
[-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set ]]
[-setfattr {-n name [-v value] | -x name} ]
[-setrep [-R] [-w] ...]
[-stat [format] ...]
[-tail [-f] ]
[-test -[defsz] ]
[-text [-ignoreCrc] ...]
[-touchz ...]
[-truncate [-w] ...]
[-usage [cmd ...]]
Generic options supported are
-conf specify an application configuration file
-D use value for given property
-fs specify a namenode
-jt specify a ResourceManager
-files specify comma separated files to be copied to the map reduce cluster
-libjars specify comma separated jar files to include in the classpath.
-archives specify comma separated archives to be unarchived on the compute machines.
The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DDD 영역 모델 개발집계(Aggregation): 이것은 느슨한 대상 간의 관계다.예를 들어 컴퓨터와 그의 외곽 설비가 바로 예이다. 이것은 매우 강한 대상 간의 관계이다. 예를 들어 나무와 나뭇잎 사이의 관계다. 하나의 합성에서 부분...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.