[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`