Hadoop的核心能力
Hadoop是Apache软件基金会下的顶级开源项目,用以提供:
- 分布式数据存储
- 分布式数据计算
- 分布式资源调度
为一体的整体解决方案。相应的,hadoop有三大组件
- hdfs分布式存储组件,提供海量数据存储的分布式存储组件,用于构建分布式文件系统;
- map reduce分布式计算组件,提供编程接口供用户开发分布式计算应用程序;
- YARN分布式调度组件,供用户调度大规模集群资源
hdfs组件内部角色划分
hdfs全称hadoop distributed file system,hadoop分布式文件系统,是一个典型的主从模式架构
主角色:NameNode,负责发送控制命令
· HDFS系统的主角色,是一个独立的进程
· 负责管理HDFS整个文件系统
· 负责管理DataNode
从角色:DataNode,负责执行及数据存储,即存入数据和取出
主角色辅助角色:SecondaryNameNode,辅助主角色,也是一个独立进程,主要帮助NameNode完成元数据整理工作
hdfs集群启停
Hadoop HDFS:组件内置了HDFS集群的一键启停脚本。
HADOOP HOME/sbin/start-dfs.sh,一键启动HDFS集群
执行原理:
·在执行此脚本的机器上,启动SecondaryNameNode
·读取core-site.xml内容(fs.defaultFS.项),确认NameNode所在机器,启动NameNode
·读取workers内容,确认DataNode)所在机器,启动全部DataNode:
HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群
执行原理:
·在执行此脚本的机器上,关闭SecondaryNameNode
·读取core-site.xml内容(fs.defaultFS.项),确认NameNode所在机器,关闭NameNode
·读取workers[内容,确认DataNode)所在机器,关闭全部NameNode
单进程启停
除了一键启停外,也可以单独控制进程的启停。
1.SHADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停
用法:hadoop-daemon.sh(start|status|stop)(namenode|secondarynamenode|datanode)
2.SHADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
用法:hdfs–daemon(start|status|stop)(namenode|secondarynamenode|datanode)
hdfs基础文件操作命令
hdfs文件系统也是以/作为根目录来描述hdfs,hdfs的命令参数一般都带文件路径操作,那么如何区分linux本地文件和hdfs上的文件?我们可以显式的通过文件头来区分:
·Linux:file:///
·HDFS:hdfs://namenode:port/
如:
·Linux:file:///usr/local/hello.txt
·HDFS:hdfs://node1:8020/usr/local/hello.txt
一般情况下,协议头file:///或hdfs://node1:8020/可以省略
·需要提供Linux路径的参数,会自动识别为fie://
·需要提供HDFS路径的参数,会自动识别为hdfs://
除非你明确需要写或不写会有BUG否则一般不用写协议头。
此外,hdfs提供了两种命令体系:
- hadoop命令(老版),格式:hadoop fs + 参数
- hdfs命令(新版),格式:hdfs dfs + 参数
两种命令的操作效果没区别,一些特殊场景需要用到hadoop或hdfs
-mkdir参创建目录
hadoop fs -mkdir -p /home/tmp
hdfs dfs -mkdir -p /home/tmp
这里-p标识父目录不存在也会创建父目录
如果不指定文件头,这里的路径默认hdfs的命令
-ls查看目录
hadoop fs -ls -h -R /home/tmp
hdfs dfs -ls -h -R /home/tmp
-h 人性化显式目录/文锦,-R递归查看目录其子目录,默认也是查看hdfs文件系统
-put上传文件
hadoop fs -put -f -p src_path dest_path
hdfs dfs -put -f -p src_path dest_path
-f 表示强制覆盖,-p保留访问和修改时间,所有权和权限
src_path是本地文件系统路径,dest_path是远程文件系统路径
-cat 查看远程文件
-cat查看全部文件内容
hadoop fs -cat src_path dest_path
hdfs dfs -cat src_path dest_path
通常配合more命令查看大文件
hadoop fs -cat src_path dest_path | more
-get下载文件
hadoop fs -get -f -p src_path dest_path
hdfs dfs -get -f -p src_path dest_path
这里的src_path是远程hdfs文件系统上的路径,dest_path是本地路径,标识要从远程下载到本地,-f也是强制覆盖,-p也是保留权限、访问和修改时间信息
-cp复制文件(hdfs文件系统上的复制)
hadoop fs -cp -f src_path dest_path
hdfs dfs -cp -f src_path dest_path
-f覆盖目标目录下的文件,这个命令的操作路径都是hdfs文件系统上的,
同时,如果dest_path路径我们起一个新名,就起到了改名的效果,如果是目录,就是复制到目录下
-appendToFile追加到远程文件
hadoop fs -appendToFile src_path dest_path
将所有给定本地文件内容追加到远程文件末尾,src_path是本地文件,dest_path市远程文件,如果dest文件不存在,则创建该文件,若本地文件为-,则为从标准输入中读入。hdfs文件系统只支持删除和追加,不能修改其中某个一些内容
-mv移动文件或目录
hadoop fs -mv src_path dest_path
hdfs dfs -mv src_path dest_path
在hdfs文件系统上进行文件的移动操作,也可以进行改名
-rm -r删除文件或目录
删文件不需要加-r参数
hadoop fs -rm -r [-skipTrash] dest_path
hdfs dfs -rm -r [-skipTrash] dest_path
-skipTrash标识跳过回收站,直接删除,回收站功能默认是关闭的
回收站功能默认关闭,如果要开启需要在core-site.xml内配置
fs.trash.interval
1440
其他操作命令请查看官方文档
https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/FileSystemShell.html
hdfs权限控制
hdfs超级权限用户是启动namenode的用户,
修改权限
在HDFS中,可以使用和Linux一样的授权语句,即:chown和chmod
·修改所属用户和组:
hadoop fs -chown [-R]root:root /xxx.txt
hdfs dfs -chown [-R]root:root /xxx.txt
·修改权限
hadoop fs -chmod [-R]777 /xxx.txt
hdfs dfs -chmod [-R]777 /xxx.txt
通常遇到权限问题,一般是用户权限不够导致
big data tools插件
通常我们可以在pycharm、jtbrain、datagrp中安装big data tools插件来实现图形化地hadoop文件操作