HDFS初步使用
HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。其概念和内容可以参考[1]。这里就做一个简单的实验来看一下其文件管理的功能。更多的Hadoop命令可以参考[2]。
用户建立
在实验环境中,不建议使用root账号直接登录运行,所以建立一个普通账号。
# Elephant主机执行
# 安装ansible
[root@elephant ~]# yum install -y ansible
# 在/etc/ansible/hosts中新增所有主机名
# 建立ansible文件
[root@elephant ~]# mkdir playbook
[root@elephant ~]# vim ./playbook/useradd.yaml
---
- hosts: hadoop
remote_user: root
vars_prompt:
- name: user_name
prompt: Enter Username
private: no
- name: user_passwd
prompt: Enter Password
encrypt: "sha512_crypt"
confirm: yes
tasks:
- name: create user
user:
name: "{{user_name}}"
password: "{{user_passwd}}"
# 执行
[root@elephant ~]# ansible-playbook ./playbook/useradd.yaml
Enter Username: sujx
Enter Password:
confirm Enter Password:
PLAY [hadoop] *****************************************************************************
HDFS文件使用
我们先将准备的481M文件(access.log)上传至用户家目录,看看这个文件将在hdfs文件系统中如何存储。
[root@elephant ~]# su hdfs
[hdfs@elephant root]hadoop fs -mkdir /user/sujx
[hdfs@elephant root] hadoop fs -chown sujx /user/sujx
[hdfs@elephant root]su sujx -
[hdfs@elephant root] hdfs dfs -put access_log weblog
然后,我们通过hdfs的web控制台就可以看到文件的存储情况,可见文件以3副本的形式,按照每个128M大小的存储块分割存储在namenode之上。当前情况是分成了4块。
我们可以从lion主机中看到存储的数据块。
[root@lion ~]# tree /dfs
/dfs
`-- dn
|-- current
| |-- BP-752680285-192.168.174.131-1582986010714
| | |-- current
| | | |-- VERSION
| | | |-- dfsUsed
| | | |-- finalized
| | | | `-- subdir0
| | | | |-- subdir0
| | | | |-- subdir1
| | | | |-- subdir2
| | | | |-- subdir3
| | | | | |-- blk_1073742734
| | | | | |-- blk_1073742734_1910.meta
| | | | `-- subdir4
| | | `-- rbw
| | |-- scanner.cursor
| | `-- tmp
| `-- VERSION
`-- in_use.lock