hadoop 离线 day07 HDFS文件系统的基本特性和操作

1、HDFS文件系统的基本特性

HDFS的特性:

  • master/slaver架构:主从架构
  • namenode:主节点,主要用于存储元数据
  • datanode:用于存储数据,就是出磁盘的
  • 分块存储:把一个大的文件化成一个个小的block块,在hadoop2中,一个block块的大小默认是128M。
  • 副本机制:一个1280M的文件需要拆成10个block块,每个block块都有三个副本。
  • 一次写入,多次读取:适用于频繁读取的情况,不适用与频繁写入的情况,改变文件,涉及改元数据的改变。

2、HDFS的命令行使用

  • ls 查看文件
    hdfs dfs -ls path
hdfs dfs -ls /test
hdfs dfs -ls -R /test
  • movefromLocal 移动文件夹,是剪切,本地文件没有了
hdfs dfs -movefromLocal localDir hdfs 
  • moveToLocal 向本地移动文件夹
hdfs dfs -moveToLocal hdfs  localDir 
  • mv 移动文件
hdfs dfs -mv /test/input/install.log /test/input/install2.log
  • put 本地上传到hdfs,复制过去
hdfs dfs -put localDir hdfs 
  • appendToFile 追加到hdfs文件中去
hdfs dfs -appendToFile  localfilehdfs hdfsfile
  • cat 查看文件内容
hdfs dfs -cat hdfsfile
  • cp 复制文件
hdfs dfs -cp hdfsfile hdfsfile2
  • rm 删除文件或文件夹
hdfs dfs -rm  hdfsfile 
  • chmod 修改权限
hdfs dfs -chmod -R 777 hdfsfile 
hdfs dfs -chmod -R hadoop:hadoop hdfsfile
  • expunge 清空回收站
hdfs dfs -expunge 

3、HDFS的高级使用命令

3.1 hdfs的文件限额配置

  • 数量限额
hdfs dfs -mkdir -p /user/root/wq
# 限额只能2个(本身算一个,其实只能上传一个文件)
hdfs dfsadmin -setQuota 2 /user/root/wq
# 删除限额
hdfs dfsadmin -clrQuota  /user/root/wq

  • 空间大小限额
 hdfs dfs  -rmr /user/root/wq/
 hdfs dfsadmin -setSpaceQuota 4k /user/root/wq
 # 删除限额
hdfs dfsadmin -clrSpaceQuota  /user/root/wq
 # 查看限额
 hdfs dfs -count -q -h /user/root/wq

3.2 hdfs的安全模式

在集群刚启动的时候,集群处于安全模式的,对外不提供任何服务,只做集群的自检。如果集群自检没有问题,则过三十秒自动脱离安全模式。

#查看是否处于安全模式
hdfs dfsadmin -safemode get 
#进入安全模式
hdfs dfsadmin -safemode enter 
#离开安全模式
hdfs dfsadmin -safemode leave 

4、hadoop的基准测试

集群搭建成功之后,第一件事就是做基准测试,就是压力测试,测试网络带宽,文件读取速度和写入速度等

4.1 测试写入速度
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

描述
测试结果跟磁盘转速有关系,一般也就7200/min 5400/min,服务器的转速轻松过万。
磁头不动,磁盘转动。
真实的服务器写入速度在20-30M/秒

4.2 测试读取速度
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

在这里插入图片描述
本次测试大于为36M/s,有一些机器比较新,由于集群是搭建在一台物理机上的三台虚拟机,读取操作相当于操作本地文件 ,因此读取速度比较快,测试结果能达到超过100 M,一般真实服务器速度大约在50-100M每秒的样子

# 清除测试数据
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

实际线上环境该如何压测:
从小到大 ,10M,100M,500M

复习:
在这里插入图片描述

<think>好的,用户想比较HiveSQLMySQL的特点使用场景。首先,我需要回顾两者的基本概念设计目的。MySQL是传统的关系型数据库,主要用于OLTP场景,处理高并发的短事务。而HiveSQL是基于Hadoop的数据仓库工具,适用于OLAP,处理大规模数据的批量分析。 接下来,要对比它们的架构差异。MySQL采用主从架构,支持ACID事务,存储引擎如InnoDB适合事务处理。HiveSQL则是构建在HDFS之上,通过MapReduce或Tez执行查询,适合处理PB级数据,但延迟较高。用户可能关心性能差异,需要具体说明两者在不同数据量查询类型下的表现。 然后,使用场景方面,MySQL适合需要快速响应的在线应用,比如电商交易。HiveSQL则适合离线分析,比如日志处理或数据挖掘。用户可能想知道何时选择其中一个,需要明确各自的优势领域。 另外,功能差异也很重要。MySQL支持完整的SQL标准,事务索引优化,而HiveSQL在Hive 3.x之后才支持ACID,且SQL兼容性有限。语法上,HiveSQL有扩展,如分区分桶,这些需要举例说明。 性能优化方面,MySQL的优化器针对OLTP优化,索引策略不同。HiveSQL则依赖分布式计算分区来提升性能。用户可能想知道如何优化两者的查询,需要提到分区、索引配置参数。 还要考虑用户的实际应用场景。如果他们处理的是海量数据且不需要实时响应,HiveSQL更合适。如果是高并发交易系统,MySQL是更好的选择。可能还需要提到扩展性,HiveSQL可以横向扩展,而MySQL通常垂直扩展或通过分片。 最后,确保引用提供的资料。比如引用[1]提到InnoDB适合事务处理,引用[2]说明MySQL的功能数据类型,引用[3]涉及优化器行为,引用[4]讨论分布式架构的内存问题,这可能与HiveSQL的分布式设计相关。 总结结构,分点比较核心差异、使用场景、性能对比、功能差异,并给出建议。确保使用正确的LaTeX格式,行内公式用$,独立公式用$$,并检查语法正确性。生成相关问题时要覆盖架构、优化、适用场景等方面。</think>### HiveSQL vs MySQL 核心差异与使用场景分析 #### 一、核心架构差异 1. **数据规模与处理方式** - **MySQL**:面向OLTP(在线事务处理),适用于高并发、低延迟的短事务,支持单节点或主从架构,最大数据量通常在TB级别[^2]。 - **HiveSQL**:面向OLAP(在线分析处理),基于Hadoop分布式文件系统HDFS),通过MapReduce/Tez/Spark处理PB级数据,但查询延迟较高(分钟级)[^4]。 2. **事务支持** - **MySQL**:支持完整ACID事务(如InnoDB引擎),适合需要强一致性的场景[^1]。 - **HiveSQL**:早期仅支持批量追加写入,Hive 3.x后支持有限ACID事务(如行级更新),但适用性仍弱于MySQL。 #### 二、典型使用场景 | **场景** | **MySQL适用性** | **HiveSQL适用性** | |-------------------|------------------------------|----------------------------------| | 高并发交易系统 | ✅ 如电商订单处理 | ❌ 延迟高,不适合实时事务 | | 复杂分析查询 | ❌ 大数据量时性能下降 | ✅ 如日志分析、用户行为统计 | | 数据实时更新 | ✅ 支持行级锁、快速响应 | ❌ 批量写入为主,更新效率低 | | 数据仓库/ETL | ❌ 存储成本高,扩展性有限 | ✅ 支持海量历史数据存储与ETL | #### 三、性能对比 1. **查询优化机制** - **MySQL**:基于代价的优化器(CBO),支持B+树索引、覆盖索引等,适合点查询小范围扫描[^3]。 ```sql -- MySQL索引优化示例 CREATE INDEX idx_user ON orders(user_id); ``` - **HiveSQL**:依赖分区(Partitioning)、分桶(Bucketing)向量化查询,适合全表扫描聚合操作。 ```sql -- Hive分区表示例 CREATE TABLE logs (dt STRING, content STRING) PARTITIONED BY (day STRING); ``` 2. **分布式计算能力** - HiveSQL通过并行计算框架(如Tez)实现横向扩展,而MySQL需通过分库分表或读写分离扩展,复杂度较高。 #### 四、功能与语法差异 1. **SQL兼容性** - **MySQL**:完整支持SQL标准,提供存储过程、触发器等功能[^2]。 - **HiveSQL**:HiveQL语法与SQL类似,但部分高级功能缺失(如子查询更新),且支持UDF扩展。 2. **数据类型** - **MySQL**:包含精确类型(如`TINYINT`, `DECIMAL`)空间类型(如`GEOMETRY`)。 - **HiveSQL**:支持复杂类型(如`ARRAY`, `MAP`),适合半结构化数据。 #### 五、选择建议 - **选MySQL**:需要实时响应、事务完整性或复杂单表查询的场景(如金融交易系统)。 - **选HiveSQL**:处理历史数据分析、需横向扩展且容忍较高延迟的场景(如广告点击率统计)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值