大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
身边的大数据:微信、qq、抖音都是大数据。
4V特征
固有特征
介绍:大数据的分布式计算是将较大的数据分成小的部分进行处理。
传统分布式计算 | 新的分布式计算 - Hadoop | |
---|---|---|
计算方式 | 将数据复制到计算节点 | 在不同数据节点并行计算 |
可处理数据量 | 小数据量 | 大数据量 |
CPU性能限制 | 受CPU限制较大 | 受单台设备限制小 |
提升计算能力 | 提升单台机器计算能力 | 扩展低成本服务器集群 |
Hadoop是一个开源分布式系统架构
处理海量数据的架构首选
非常快得完成大数据计算任务
已发展成为一个Hadoop生态圈
Hadoop起源于搜索引擎Apache Nutch
Hadoop发行版本
RDBMS | hadoop | |
---|---|---|
格式 | 写数据时要求 | 读数据时要求 |
速度 | 读数据时速度快 | 写数据时速度快 |
数据监管 | 标准结构化 | 任意结构数据 |
数据处理 | 有限的处理能力 | 强大的处理能力 |
数据类型 | 结构化数据 | 结构化、半结构化、非结构化 |
应用场景 | 交互式OLAP分析ACID事务处理企业业务系统 | 处理非结构化数据海量数据存储计算 |
zookeeper是一个分布式应用程序协调服务
配置管理、命名服务、分布式同步、队列管理、集群管理等
角色:Leader、Follower、Observer
**leader:**领导式集群 hadoop1
**Follower:**跟随者模式hadoop2.0
**Observer:**观察者模式(减少yarn向namenode汇报的次数)
hdfs dfs -cmd<args>
hadoop fs -cmd<args>(已过时)
-ls 查看
-mkdir 新建文件夹
-put 上传
-rm 删除
-help 帮助
命令 | 描述 |
---|---|
hdfs dfsadmin -report | 返回集群的状态信息 |
hdfs dfsadmin -safemode enter/leave | 进入和离开安全模式 |
hdfs dfsadmin -saveNamespace | 保存集群的名字空间 |
hdfs dfsadmin -rollEdits | 回滚编辑日志 |
hdfs dfsadmin -refreshNodes | 刷新节点 |
hdfs dfsadmin -getDatanodeInfo node1:8010 | 获取数据节点信息 |
hdfs dfsadmin -setQuota 10 /hdfs | 设置文件目录配额 |
hdfs dfs -mkdir /hdfs/shell
hdfs dfs -ls /hdfs/shell
hdfs dfs -put /home/hadoop/data/mobile.txt /hdfs/shell
hdfs dfs -text /hdfs/shell/mobile.txt
hdfs dfs -get /hdfs/shell/mobile.txt /home/hadoop
hdfs dfs -du /hdfs/shell
hdfs dfs -rm /hdfs/shell/mobile.txt
hdfs dfs -rmr /hdfs
#rmr递归删除目录下所有子目录和文件,生产环境中慎用
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
* @Author LYQ
* @Date 2020/7/2
* @Description
*/
public class HdfsClient {
//创建一个文件夹
@Test
public void testMkdirs() throws URISyntaxException, IOException, InterruptedException {
//1.创建配置文件
Configuration conf= new Configuration();
//2.获取文件系统
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
//3.调用API操作
fs.mkdirs(new Path("/hdfs"));
//4.关闭资源
fs.close();
}
//上传一个文件
@Test
public void testCopyFromLocalFile() throws URISyntaxException,IOException,InterruptedException{
//1.创建配置文件
Configuration conf=new Configuration();
//2.获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
//3.调用API操作
fs.copyFromLocalFile(new Path("D:\\jarFile\\log4j.properties"),new Path("/hdfs"));
//4.关闭资源
fs.close();
}
//下载一个文件
@Test
public void testCopyToLocalFile() throws URISyntaxException,IOException,InterruptedException{
//1.创建配置文件
Configuration conf=new Configuration();
//2.获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://hadoop1:9000"),conf,"root");
//3.调用API操作
fs.copyToLocalFile(new Path("/hdfs"),new Path("E:\\"));
//4.关闭资源
fs.close();
}
//删除文件夹
@Test
public void testDelete() throws URISyntaxException, IOException,InterruptedException{
//1.创建配置文件
Configuration conf=new Configuration();
//2.获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
//3.调用API操作
//b:代表是否递归删除
fs.delete(new Path("/hdfs"),true);
//4.关闭资源
fs.close();
}
}