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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 머신러닝용 경마 데이터 준비하지만 자유형 구축의 논리에도 시간이 걸리고 자유형 자체에도 시간이 걸리는 점 등을 고려해 이번에는 중앙경마를 주최하는 JRA가 제공하는 JRA-VAN 데이터 실험실의 무료 체험판에 첨부된 DVD 데이터로 MySQL...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.