hadoop 分布式 分布式存储
最后更新于:2022-04-02 04:02:34
[TOC]
## 适合
* 大规模数据
* 流式数据(写一次,读多次)
* 商用硬件(一般硬件)
## 不适合
* 低延时的数据访问
* 大量的小文件
* 频繁修改文件(基本就是写1次)
## Hadoop目录结构
* `bin`:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理
脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop
* `etc`:Hadoop配置文件所在的目录,包括`core-site,xml、hdfs-site.xml、mapredsite.xml`等
* `include`:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头
文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序
* `lib`:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的
头文件结合使用
* `libexec`:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动
参数(比如JVM参数)等基本信息
* `sbin`:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关
闭脚本
* `share`:Hadoop各个模块编译后的jar包所在的目录
## 三种Shell命令方式的区别
`hadoop fs`
- `hadoop fs`适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
`hadoop dfs`
- `hadoop dfs`只能适用于HDFS文件系统
`hdfs dfs`
- * `hdfs dfs`跟`hadoop dfs`的命令作用一样,也只能适用于HDFS文件系统
## 各配置参数的作用及默认值
[官方参考](https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml)
|参数|默认值| 描述|
|---|---|---|
|dfs.datanode.address | 0.0.0.0:50010 |用于数据传输的datanode服务器地址和端口|
|dfs.datanode.http.address | 0.0.0.0:50075 | datanode http服务器地址和端口。|
|dfs.namenode.http-address | 0.0.0.0:50070 | ui将监听的地址和基本端口 |
|dfs.namenode.name.dir | file://${hadoop.tmp.dir}/dfs/name| 确定DFS名称节点应该存储名称表(fsimage)在本地文件系统的何处 |
| dfs.datanode.data.dir | file://${hadoop.tmp.dir}/dfs/data | 确定DFS数据节点应该将其块存储在本地文件系统的何处。
| dfs.replication | 3 | 默认副本数 |
| dfs.blocksize | 67108864 | The default block size for new files, in bytes. You can use the following suffix (case insensitive): k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.), Or provide complete size in bytes (such as 134217728 for 128 MB). |
## 接口
### 创建目录
`hadoop fs -mkdir /input`
### 查看目录
`hadoop fs -ls -R /`
### 文件上传
`hadoop fs -put /home/binguner/Desktop/test.txt /input`
### 获取文件
`hadoop dfs -get /input/test.txt /home/binguenr/Desktop`
### 删除文件
`hadoop dfs -get /input/test.txt /home/binguenr/Desktop`
## 问题
### yum 安装的 java 没有jps
`yum install java-1.8.0-openjdk-devel`
### Name node is in safe mode.
取消安全模式
`bin/hadoop dfsadmin -safemode leave`
';