hadoop基础
-
什么是大数据?
- 为了处理海量数据所产生的技术
- 通过分布式技术处理数据
-
应用
- 数据挖掘
- 数据仓库
- 数据分析
-
分布式
- 将多台服务器集中,每台服务器做不同的事情
2. 分布式系统:一个硬件或软件,其组件会分布在不同的计算机上,并可以通过网络进行通信和协调
3. 常用技术
1. 分布式数据存储:HDFS![在这里插入图片描述](https://img-blog.csdnimg.cn/9a86f4c358b24d57badd8a641b575e3e.png#pic_center) 2. 分布式计算:MapReduce ![在这里插入图片描述](https://img-blog.csdnimg.cn/4b1385d8aeb5435984753d35c99476f8.png#pic_center)
-
集群
-
多台不同服务器部署相同的应用或服务模块
-
负载均衡,提供服务
-
资源调度:YARN
- 去中心化模式:没有主服务器,基于特定规则同步协调
- 中心化模式:有一个主服务器,都由主服务器统一调度分配
-
-
Hadoop框架
- 核心工作
- 数据存储
- HDFS:分布式存储
- HBase:NoSQL(key-value)
- Kudu
- 云平台存储
- 数据计算
- MapReduce
- Hive
- Spark
- Flink
- 数据传输
- Sqoop(ETL工具)
- Flume(流式数据采集)
- Kafka(分布式消息系统)
- Pulsar(分布式消息系统)
- 数据存储
- 核心工作
-
入门
-
Hadoop优势
- 扩容能力
- 成本低
- 效率高
- 可靠性
-
HDFS
- NameNode:主节点
- secondaryNameNode:辅助主节点,备份元数据
- DataNode:存储集群中的数据
-
YARN
- ResourceManager:接收用户计算请求任务,负责集群资源分配
- NodeManager:执行主节点分配任务
-
MapReduce(分而治之)
- Map:
- Reduce:
-
-
Hadoop启动
-
HDFS上使用shell命令
# 法一 hadoop fs -<args> #既可以操作HDFS,也可以操作本机系统 # 法二 hdfs dfs -<args> #只能操作HDFS系统 # 实例 hdfs dfs 回车 查看所有命令 hdfs dfs -help 帮助 hdfs dfs -ls 显示文件列表 -R # 递归显示文件列表 hdfs dfs -mkdir 创建目录 -mkdir -p 创建多级目录 hdfs dfs -mv 重命名文件或目录或移动文件或目录 hdfs dfs -touch /a/a.txt 创建a.txt文件 hdfs dfs -cp 复制文件或目录 hdfs dfs -rm 删除文件或目录 hdfs dfs -cat 查看文件内容 hdfs dfs -put 上传本地文件或目录到hdfs上 hdfs dfs -get 下载hdfs上的文件或目录到本地 hdfs dfs -appendToFile /path/to/local/h.txt /user/hadoop/itcast/a.txt 将本地文件中的内容追加到HDFS上的文件里面 # 启动例子统计词频 cd /export/server/hadoop/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output
-
Hadoop目录结构
# tree查看一级目录 tree -L 1 hadoop ├── bin # Hadoop最基本的管理脚本和使用脚本所在的目录 ├── etc # 存放一些hadoop的配置文件 ├── include # 编程库头文件,用于C++程序访问HDFS或者编写MapReduce程序 ├── lib # 存放的是Hadoop运行时依赖的jar包,Hadoop在执行时会把lib目录下面的jar全部加到classpath中 ├── libexec # 各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息 ├── LICENSE-binary ├── licenses-binary ├── LICENSE.txt ├── logs # Hadoop运行的日志 ├── NOTICE-binary ├── NOTICE.txt ├── README.txt ├── sbin # 管理脚本的所在目录,重要是对hdfs和yarn的各种开启和关闭和单线程开启和守护 └── share # 各个模块编译后的jar包所在的目录