Hadoop_06_hdfs和Hadoop的基准测试

HDFS

HDFS
Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

基本特性

master/slave架构
主从架构

namenode
主节点,主要用于存储元数据,处理用户的请求

datanode
从节点,主要用于存储数据,说白了就是出磁盘的

元数据信息
描述数据的数据 文件的名称,文件的位置,文件的大小,创建时间,修改时间,权限控制

namenode元数据管理
namenode将所有的元数据信息保存起来,方便统一的查找

datanode数据存储
出磁盘,用于存储我们的文件数据

分块存储
把一个大的文件,化成一个个的小的block块,在hadoop2当中一个block块默认是128M的大小100台机器,每台机器的磁盘容量是1T 有一个文件 2T 可以把大文件切成很多小的block块,每个block块是128M

统一的命名空间
对外提供统一的文件访问的地址 hdfs://node01:8020

副本机制
1280M的文件需要拆成10个Block块 副本机制,每个block块都有三个副本,blk_00001 node01 blk_00001 node02 blk_00001 node03

一次写入,多次读取
hdfs文件系统,适用于频繁读取的情况,不适用与频繁写入的情况 改变文件,涉及到元数据的改变

基本命令使用

ls
Usage: hdfs dfs -ls [-R] < args>
Example: hdfs dfs -ls /user/hadoop/file1
Exit Code: Returns 0 on success and -1 on error.

lsr
Usage: hdfs dfs -lsr
Recursive version of ls.
Note: This command is deprecated. Instead use hdfs dfs -ls -R

mkdir
Usage: hdfs dfs -mkdir [-p] < paths>
-p是创造多级路径
Example:

  • hdfs dfs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
  • hdfs dfs -mkdir hdfs://nn1.example.com/user/hadoop/dir
    hdfs://nn2.example.com/user/hadoop/dir
    Exit Code:
    Returns 0 on success and -1 on error.

moveFromLocal:相当于剪切操作
Usage: hdfs dfs -moveFromLocal < localsrc> < dst>
Similar to put command, except that the source localsrc is deleted after it’s copied.

mv:可以用来重命名
Usage: hdfs dfs -mv URI [URI …]
Moves files from source to destination. This command allows multiple sources as well in which case the destination needs to be a directory. Moving files across file systems is not permitted.
Example:

  • hdfs dfs -mv /user/hadoop/file1 /user/hadoop/file2
  • hdfs dfs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2
    hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1

Exit Code:
Returns 0 on success and -1 on error.

put:复制,把本地移到hdfs
Usage: hdfs dfs -put < localsrc> … < dst>
Copy single src, or multiple srcs from local file system to the destination file system. Also reads input from stdin and writes to destination file system.
Example:

  • hdfs dfs -put localfile /user/hadoop/hadoopfile
  • hdfs dfs -put localfile1 localfile2 /user/hadoop/hadoopdir
  • hdfs dfs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
  • hdfs dfs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the
    input from stdin.

Exit Code:
Returns 0 on success and -1 on error.

appendToFile:追加
Usage: hdfs dfs -appendToFile …
追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入.

  • hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
  • hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
  • hdfs dfs -appendToFile localfile
    hdfs://nn.example.com/hadoop/hadoopfile
  • hdfs dfs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

Exit Code:
Returns 0 on success and 1 on error.

cat
Usage: hdfs dfs -cat URI [URI …]
查看内容.
Example:

  • hdfs dfs -cat hdfs://nn1.example.com/file1
    hdfs://nn2.example.com/file2
  • hdfs dfs -cat file:///file3 /user/hadoop/file4

Exit Code:
Returns 0 on success and -1 on error.

cp
Usage: hdfs dfs -cp [-f] [-p | -p[topax]] URI [URI …]
复制文件(夹),可以覆盖,可以保留原有权限信息
option:

  • The -f option will overwrite the destination if it already exists.
  • The -p option will preserve file attributes [topx] (timestamps, ownership, permission, ACL, XAttr).
    Example:
  • hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2
  • hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

Exit Code:
Returns 0 on success and -1 on error.

rm 删除
Usage: hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI …]
Example:
hdfs dfs -rm hdfs://nn.example.com/file /user/hadoop/emptydir
hdfs dfs -rm -r 递归删除
Exit Code:
Returns 0 on success and -1 on error.

chmod:修改权限
Usage: hdfs dfs -chmod [-R] <MODE[,MODE]… | OCTALMODE> URI [URI …]
hdfs dfs -chmod -R 777 /xxx

chown:修改所有者.
Usage: hdfs dfs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
hdfs dfs -chown -R hadoop:hadoop /xxx
递归的修在组或者用户

expunge:清空回收站
Usage: hdfs dfs -expunge

高级使用命令

HDFS文件限额配置

hdfs文件的限额配置允许我们以文件大小或者文件个数来限制我们在某个目录下上传的文件数量或者文件内容总量,以便达到我们类似百度网盘网盘等限制每个用户允许上传的最大的文件的量。

文件数量限额

创建hdfs文件夹
hdfs dfs -mkdir -p /user/root/lisi

给该文件夹下面设置最多上传两个文件,上传文件,发现只能上传一个文件,因为自己算一个,限制三个只能上传2个。
hdfs dfsadmin -setQuota 2 lisi

清除文件数量限制
hdfs dfsadmin -clrQuota /user/root/lisi

查看hdfs文件限额数量
hdfs dfs -count -q -h /user/root/lisi

空间大小限额

限制空间大小4KB
hdfs dfsadmin -setSpaceQuota 4k /user/root/lisi

测试:上传超过4Kb的文件大小上去提示文件超过限额
hdfs dfs -put /export/softwares/zookeeper-3.4.5-cdh5.14.0.tar.gz /user/root/lisi

清除空间限额:
hdfs dfsadmin -clrSpaceQuota /user/root/lisi
重新测试:上传成功
hdfs dfs -put /export/softwares/zookeeper-3.4.5-cdh5.14.0.tar.gz /user/root/lisi

hdfs安全模式

在我们集群刚刚启动的时候,集群是出于安全模式的,对外不提供任何服务,只做一件事,集群的自检.
如果集群自检没有什么问题,那么过三十秒钟,自动脱离安全模式,可以对外提供服务

#手动进入安全模式/只读模式
hdfs dfsadmin -safemode enter
#手动进入安全模式后需要手动离开安全模式
hdfs dfsadmin -safemode leave

Hadoop基准测试

集群启动成功之后,第一件事就是做基准测试,就是压测,测试我们的网络带宽,测试我们的文件读取和写入速度等等
了解集群上限能存多少文件
网络带宽如何?网速够不够快
最大带宽取决于交换机

写入速度的测试

向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB

完成之后查看写入速度结果
hdfs dfs -text /benchmarks/TestDFSIO/io_write/part-00000

如下图:我的小surface写入速度:
在这里插入图片描述
如下图,磁头不动磁盘转,磁盘转的越快,写入速度越快。
在这里插入图片描述

读取速度的测试

测试hdfs的读取文件性能
在HDFS文件系统中读入10个文件,每个文件10M
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -read -nrFiles 10 -fileSize 10MB

查看读取结果
hdfs dfs -text /benchmarks/TestDFSIO/io_read/part-00000
在这里插入图片描述

实际线上环境压测

真实的服务器写入速度
大概在20-30M每秒的样子

真实服务读取速度测试
50-100M左右的样子

实际线上环境该如何压测
写入10G 100G文件 500G文件 1T文件

清除测试数据

hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -clean

更多基准测试参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示表示 Hadoop 找不到正确的 HDFS 安装路径。你需要检查 Hadoop 配置文件中的 hadoop_hdfs_home 参数是否正确设置,或者确认 HDFS 是否已经正确安装并设置了环境变量。 ### 回答2: Hadoop 是一款大数据处理框架,需要依赖 Hadoop HDFS 存储系统。在配置 Hadoop 环境时,需要设置环境变量 HADOOP_HDFS_HOME,以指定 Hadoop HDFS 的安装路径。当出现 "error: invalid hadoop_hdfs_home" 错误时,意味着系统无法识别该环境变量,即 Hadoop HDFS 安装路径无效。 解决该问题的方法是检查环境变量的设置是否正确。首先在命令行界面输入 echo $HADOOP_HDFS_HOME 命令,以检查系统是否能识别该环境变量。如果该命令无法输出正确的路径,则需要修改环境变量的设置。 可以在 ~/.bashrc 或 ~/.bash_profile 文件中添加以下环境变量设置语句: export HADOOP_HDFS_HOME=/path/to/hadoop-hdfs 其中,/path/to/hadoop-hdfsHadoop HDFS 的安装路径。设置好这个环境变量之后,可以输入 source ~/.bashrc 或 source ~/.bash_profile 命令,以使环境变量的改动生效。 另外,还可通过设置 Hadoop 的配置文件来修改 Hadoop HDFS 的安装路径。可以在 Hadoop 配置文件 core-site.xml 中添加以下配置: <property> <name>hadoop.hdfs.home</name> <value>/path/to/hadoop-hdfs</value> </property> 在以上配置中,/path/to/hadoop-hdfsHadoop HDFS 的安装路径。保存好配置文件后,重新启动 Hadoop,即可解决 "error: invalid hadoop_hdfs_home" 错误。 ### 回答3: 这个错误信息意味着在运行hadoop相关命令时,系统无法找到指定的hadoop_hdfs_home环境变量。hadoop_hdfs_home是一个关键的环境变量,用于指定hadoop分布式文件系统(HDFS)的安装目录。如果系统无法找到或者无法识别该环境变量,就会出现invalid错误提示。 要解决这个问题,可以尝试以下步骤: 1.检查hadoop_hdfs_home环境变量是否正确设置,可以通过运行echo $hadoop_hdfs_home命令来确认该环境变量的值是否正确。 2.如果hadoop_hdfs_home环境变量未设置,可以通过手动设置该变量或者运行hadoop-env.sh脚本来设置该变量。 3.如果hadoop_hdfs_home环境变量设置正确,但仍然无法正常运行hadoop相关命令,可以尝试重新安装hadoop,并确保正确配置了环境变量。 4.最后,如果你还是无法解决这个问题,可以查看系统日志文件或运行hadoop日志命令来查找更详细的信息和错误提示,以帮助你进一步解决该问题。 总之,如果出现invalid hadoop_hdfs_home错误提示,需要确认hadoop_hdfs_home环境变量设置是否正确,并根据具体情况采取适当措施,以解决此问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值