Hadoop海量级分布式存储

、Hadoop简介:

1.大数据略知一二:

1)大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产,需要在合理的时间内达到提取、管理、处理、并且整理成为帮助企业运营决策更积极目的的信息;

2)在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理;

3)大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。

 

  1. 图解大数据:

 

 

 

 

 

 

http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html

 

 

3.项目起源:

  Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中。Hadoop是一个能够对大量数据进行分布式处理的软件框架。

  Hadoop 是最受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep 一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 Hadoop 在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。

 

4.hadoop优点:

1)高可靠:在多台廉价商用机器群集上,善于存放超大文件;

2)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3)高效性:处理速度较快。

4)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5)低成本:hadoop是开源的,项目的软件成本因此会大大降低。

6)Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

补充:云计算大数据必会单位(换算为1024=2^10;1B=8b,1汉字=2B)

bit比特|位--byte字节--KB--MB--GB--TB--PB--EB--ZB--YB--BB--NB--DB

 

5.hadoop缺点:

1)低时间延迟的数据访问:要求在例如几十毫秒内完成数据访问的应用,不适合在HDFS上运行,HDFS虽然有强大的高数据吞吐量,但是以提高时间延迟为代价,可以使用HBase满足低延迟的访问需求;

2)无法高效存储大量小文件:大量小文件会造成整个文件系统的目录树和索引目录相对较大,而这些的元数据都会存放在namenode节点;

 

、Hadoop构成:HDFS+MapReduce:

1.HDFS引擎结构:

1)Hadoop Distributed File System(HDFS)引擎:包括namenode(名称空间节点)和datanode(数据节点);

 

https://www.cnblogs.com/liango/p/7136448.html

基础概念:

1)文件块:Block,datanode中存放数据最小逻辑单元,默认块大小为64M,便于管理,不受磁盘限制,数据可在datanode的总block中进行冗余备份,存储的副本数量要少于datanode节点的数量,当一个或多个块出现故障,用户可以直接去其他地方读取数据副本;

2)NameNode:管理文件系统的命名空间,属于管理者角色,维护文件系统树内所有文件和目录,记录每个文件在各个DataNode上的位置和副本信息,并协调客户端对文件的访问;

3)DataNode:负责处理文件系统客户端的文件读写请求,存储并检索数据块,并定期向NameNode发送所存储的块的列表,属于工作者角色。负责所在物理节点的存储管理,按照一次写入,多次读取的原则,存储文件按照Block块进行存储;

4)Secondary NameNode:相当于NameNode的快照,也称之为二级NameNode,能够周期性的备份NameNode,记录NameNode上的元数据等。为防止NameNode进程出现故障,起到备份作用;

 

2. MapReduce 引擎构成:

1)MapReduce 引擎:是用于并行处理计算大数据集的软件框架,是HDFS(对于本文)的上一层,与hadoop结合工作,将用户的任务分发到上千台商用机器组成的集群上。最简单的 MapReduce应用程序至少包含 2个部分:一个 Map (映射)函数、一个 Reduce (归纳)函数,Map负责将任务分解成多个子任务,reduce负责把分解后的多任务的处理结果进行汇总;

JobTrackers :是一个master进程,用于作业的调度和管理工作,一个Hadoop集群中只有一台JobTracker;

TaskTrackers:运行在多个节点上的Slave服务,用于执行任务。TaskTracker需要运行在HDFS的DataNode节点上;

MapReduce 引擎的缺点:JobTracker单点瓶颈(负责集群心跳信息、作业管理)、JobTracker分配作业延迟高、缺乏灵活性;

2) YARN架构:是MapReduce 引擎的V2版本,解决MapReduce 引擎面临的性能瓶颈问题,将集群资源管理和作业调度进行分离;

ResourceManager进程:管理集群资源的资源管理器

MapReduce:管理作业任务

3)数据仓库工具Hive和分布式数据库Hbase:NoSQL数据库

 

3.Hadoop核心概念注意事项:

1)HDFS把节点分成两类:NameNode和DataNode。NameNode是唯一的,程序与之通信,然后从DataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。

2)MapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。

3)HDFS和MapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。

4)Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)。

5)60款大数据软件:http://blog.csdn.net/SunWuKong_Hadoop/article/details/53580425

6)Hadoop生态:http://blog.csdn.net/u010270403/article/details/51493191

 

案例:部署Hadoop分布式存储集群:

环境:

系统

IP地址

主机名

所需软件

Centos 7.4 64bit 1708

192.168.100.101

master

namenode

hadoop-2.7.6.tar.gz  

jdk-8u171-linux-x64.tar.gz

Centos 7.4 64bit 1708

192.168.100.102

slave1

datanode

hadoop-2.7.6.tar.gz  

jdk-8u171-linux-x64.tar.gz

Centos 7.4 64bit 1708

192.168.100.103

slave2

datanode

hadoop-2.7.6.tar.gz  

jdk-8u171-linux-x64.tar.gz

 

版本要求:

hadoop版本>=2.7:要求Java 7(openjdk/oracle)

hadoop版本<=2.6:要求Java 6(openjdk/oracle)

 

步骤:

  • 配置所有节点间的域名解析及创建用户(所有节点配置相同,在此列举master节点配置);
  • 配置master节点远程管理slave节点;
  • 在所有节点安装JDK环境(所有节点配置相同,在此列举master节点配置);
  • 在所有节点安装Hadoop并简要配置(所有节点配置相同,在此列举master节点配置);
  • 在master节点进行配置hadoop服务,并将配置文件复制到slave节点上;
  • 在master节点初始化并且启动Hadoop进程;
  • 验证slave节点的进程状态;
  • 网页查看http://master:50070统计hadoop集群的信息;
  • Hadoop中数据的基本管理;

 

 

  • 配置所有节点间的域名解析及创建用户(所有节点配置相同,在此列举master节点配置):

[root@master ~]# hostnamectl set-hostname master

[root@master ~]# cat <<END >>/etc/hosts

192.168.100.101 master

192.168.100.102 slave1

192.168.100.103 slave2

END

[root@master ~]# useradd hadoop

[root@master ~]# echo "hadoop" |passwd --stdin hadoop

 

  • 配置master节点远程管理slave节点:

[root@master ~]# su - hadoop

上一次登录:四 5月 31 01:54:26 CST 2018pts/0 上

[hadoop@master ~]$ ssh-keygen -t rsa

[hadoop@master ~]$ ssh-copy-id [email protected]

[hadoop@master ~]$ ssh-copy-id [email protected]

[hadoop@master ~]$ ssh-copy-id [email protected]

[hadoop@master ~]$ ssh hadoop@master ##远程连接slave节点,进行确认key值文件,不然在启动hadoo时,会出现key的问题导致无法启动

[hadoop@master ~]$ ssh hadoop@slave1

[hadoop@master ~]$ ssh hadoop@slave2

 

  • 在所有节点安装JDK环境(所有节点配置相同,在此列举master节点配置):

[hadoop@master ~]$ exit

[root@master ~]# tar zxvf jdk-8u171-linux-x64.tar.gz

[root@master ~]# mv /root/jdk1.8.0_171/ /usr/local/java/

[root@master ~]# ls /usr/local/java/

[root@master ~]# cat <<END >>/etc/profile

JAVA_HOME=/usr/local/java/

JRE_HOME=\$JAVA_HOME/jre

CLASS_PATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib

PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

END

[root@master ~]# source /etc/profile

[root@master ~]# java -version

java version "1.8.0_171"

 

  • 在所有节点安装Hadoop并简要配置(所有节点配置相同,在此列举master节点配置):

[root@master ~]# tar zxvf hadoop-2.7.6.tar.gz

[root@master ~]# mv /root/hadoop-2.7.6/ /usr/local/hadoop/

[root@master ~]# ls /usr/local/hadoop/

bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share

[root@master ~]# cat <<END >>/etc/profile

export HADOOP_HOME=/usr/local/hadoop/

export PATH=\$PATH:\$HADOOP_HOME/bin

END

[root@master ~]# source /etc/profile

[root@master ~]# echo "export JAVA_HOME=/usr/local/java/" >>/usr/local/hadoop/etc/hadoop/hadoop-env.sh

##设置HDFS存储加载jdk的环境变量

[root@master ~]# echo "export JAVA_HOME=/usr/local/java/" >>/usr/local/hadoop/etc/hadoop/yarn-env.sh

##设置mapreduce的V2版本--YARN加载jdk的环境变量

[root@master ~]# mkdir /usr/local/hadoop/name/ ##存放namenode中元数据的位置

[root@master ~]# mkdir /usr/local/hadoop/data/ ##存放datanode中的数据目录

[root@master ~]# mkdir /usr/local/hadoop/tmp/ ##存放用户临时文件

[root@master ~]# mkdir /usr/local/hadoop/var/ ##存放服务动态变化文件

[root@master ~]# chown hadoop /usr/local/hadoop/ -R

 

  • 在master节点进行配置hadoop服务,并将配置文件复制到slave节点上;

[root@master ~]# su - hadoop

[hadoop@master ~]$ vi /usr/local/hadoop/etc/hadoop/core-site.xml ##指定名称节点namenode的相关配置

<configuration>

 <property>

        <name>hadoop.tmp.dir</name>

        <value>/usr/local/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

   </property>

   <property>

        <name>fs.default.name</name>

        <value>hdfs://master:9000</value>

   </property>

</configuration>

 

[hadoop@master ~]$ vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml ##指定hdfs存储的相关配置

<configuration>

<property>

      <name>dfs.namenode.secondary.http-address</name>

      <value>master:50090</value>

</property>

<property>

   <name>dfs.name.dir</name>

   <value>/usr/local/hadoop/name</value>

   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>

</property>

<property>

   <name>dfs.data.dir</name>

   <value>/usr/local/hadoop/data</value>

   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>

</property>

<property>

   <name>dfs.replication</name>

   <value>2</value>

</property>

<property>

      <name>dfs.webhdfs.enabled</name>

      <value>true</value>

</property>

</configuration>

 

[hadoop@master ~]$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml ##修改mapreduce配置文件,将其改为YARN模型

[hadoop@master ~]$ vi /usr/local/hadoop/etc/hadoop/mapred-site.xml ##指定MapR的相关配置

<configuration>

<property>

    <name>mapred.job.tracker</name>

    <value>master:49001</value>

</property>

<property>

      <name>mapred.local.dir</name>

       <value>/usr/local/hadoop/var</value>

</property>

<property>

      <name>mapreduce.framework.name</name>

       <value>yarn</value>

</property>

</configuration>

 

[hadoop@master ~]$ vi /usr/local/hadoop/etc/hadoop/slaves ##指定slave的名称

slave1

slave2

 

附:此文件明确指定DataNode节点,可以通过节点的添加和减少来满足整个hadoop群集的伸缩性,添加节点时,首先将新节点的配置保证与NameNode节点配置相同,在此文件指定新的DataNode节点名,重新启动NameNode便完成。但为保证原有DataNode节点与新添加DataNode节点的数据进行均衡存储,需要执行此命令进行重新平衡数据块的分布:/usr/local/hadoop/sbin/start-balancer.sh

 

[hadoop@master ~]$ vi /usr/local/hadoop/etc/hadoop/yarn-site.xml ##指定YARN的相关配置

<configuration>

 

<!-- Site specific YARN configuration properties -->

 <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

</property>

<property>

        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

 <property>

        <name>yarn.resourcemanager.address</name>

        <value>master:8032</value>

</property>

 <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>master:8030</value>

</property>

 <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>master:8035</value>

</property>

 <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>master:8033</value>

</property>

 <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>master:8088</value>

</property>

</configuration>

[hadoop@master ~]$ scp -r /usr/local/hadoop/etc/hadoop/* [email protected]:/usr/local/hadoop/etc/hadoop/

[hadoop@master ~]$ scp -r /usr/local/hadoop/etc/hadoop/* [email protected]:/usr/local/hadoop/etc/hadoop/

 

  • 在master节点初始化并且启动Hadoop进程:

[hadoop@master ~]$ /usr/local/hadoop/bin/hdfs namenode -format

[hadoop@master ~]$ ls /usr/local/hadoop/name/ ##初始化所生成的名称节点文件

current

注:第一次执行格式化,提示信息如上图,如若第二次再次执行格式化,需要将namenode节点的/usr/local/hadoop/name/目录内容清空,并且将datanode节点的/usr/local/hadoop/data/目录清空,方可再次执行格式化,否则会造成namenode节点与datanode节点的数据版本ID不一致,导致启动服务失败;

[hadoop@master ~]$ /usr/local/hadoop/sbin/start-all.sh ##启动hadoop的所有进程

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

Starting namenodes on [master]

master: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-master.out

slave2: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-slave2.out

slave1: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-slave1.out

Starting secondary namenodes [master]

master: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out

starting yarn daemons

starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out

slave2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-slave2.out

slave1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-slave1.out

注:/usr/local/hadoop/sbin/start-all.sh命令等于/usr/local/hadoop/sbin/start-dfs.sh加/usr/local/hadoop/sbin/start-yarn.sh,前者启动hdfs系统,后者启动mapreduce调度工具,关闭两进程的命令为/usr/local/hadoop/sbin/stop-all.sh

[hadoop@master ~]$ netstat -utpln

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      7266/java            ##namenode进程的http端口

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   

tcp        0      0 192.168.100.101:8088    0.0.0.0:*               LISTEN      7623/java           

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   

tcp        0      0 192.168.100.101:8030    0.0.0.0:*               LISTEN      7623/java           

tcp        0      0 192.168.100.101:8032    0.0.0.0:*               LISTEN      7623/java           

tcp        0      0 192.168.100.101:8033    0.0.0.0:*               LISTEN      7623/java           

tcp        0      0 192.168.100.101:8035    0.0.0.0:*               LISTEN      7623/java           

tcp        0      0 192.168.100.101:9000    0.0.0.0:*               LISTEN      7266/java      ##客户端连接hdfs系统时用到的端口      

tcp        0      0 192.168.100.101:50090   0.0.0.0:*               LISTEN      7467/java ## secondary namenode进程的http端口

[hadoop@master ~]$ /usr/local/hadoop/bin/hdfs dfsadmin -report ##查看hadoop存储节点的状态信息

Configured Capacity: 39631978496 (36.91 GB)

Present Capacity: 33541480448 (31.24 GB)

DFS Remaining: 33541472256 (31.24 GB)

DFS Used: 8192 (8 KB)

DFS Used%: 0.00%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

Missing blocks (with replication factor 1): 0

-------------------------------------------------

Live datanodes (2):

Name: 192.168.100.103:50010 (slave2)

Hostname: slave2

Decommission Status : Normal

Configured Capacity: 19815989248 (18.46 GB)

DFS Used: 4096 (4 KB)

Non DFS Used: 3045191680 (2.84 GB)

DFS Remaining: 16770793472 (15.62 GB)

DFS Used%: 0.00%

DFS Remaining%: 84.63%

Configured Cache Capacity: 0 (0 B)

Cache Used: 0 (0 B)

Cache Remaining: 0 (0 B)

Cache Used%: 100.00%

Cache Remaining%: 0.00%

Xceivers: 1

Last contact: Thu May 31 03:03:09 CST 2018

Name: 192.168.100.102:50010 (slave1)

Hostname: slave1

Decommission Status : Normal

Configured Capacity: 19815989248 (18.46 GB)

DFS Used: 4096 (4 KB)

Non DFS Used: 3045306368 (2.84 GB)

DFS Remaining: 16770678784 (15.62 GB)

DFS Used%: 0.00%

DFS Remaining%: 84.63%

Configured Cache Capacity: 0 (0 B)

Cache Used: 0 (0 B)

Cache Remaining: 0 (0 B)

Cache Used%: 100.00%

Cache Remaining%: 0.00%

Xceivers: 1

Last contact: Thu May 31 03:03:09 CST 2018

[hadoop@master ~]$ jps

7266 NameNode ##namenode节点主进程

7623 ResourceManager ##mapreduce管理进程

7467 SecondaryNameNode ##namenode的备份进程,避免namenode进程意外停止,客户端无法读写数据

7883 Jps

 

  • 验证slave节点的进程状态;

[root@slave1 ~]$ su - hadoop

[hadoop@slave1 ~]$ netstat -utpln

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   

tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN      3391/java           

tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      3274/java           

tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      3274/java           

tcp        0      0 0.0.0.0:39938           0.0.0.0:*               LISTEN      3391/java           

tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      3274/java           

tcp        0      0 127.0.0.1:38373         0.0.0.0:*               LISTEN      3274/java           

tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      3391/java           

tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      3391/java           

[hadoop@slave1 ~]$ jps

3526 Jps

3274 DataNode

3391 NodeManager ##与namenode执行心跳信息的节点进程

 

 

  • 网页查看http://master:50070统计hadoop集群的信息;

 

 

 

​​​Hadoop中数据的基本管理:

[hadoop@master ~]$ pwd

/home/hadoop

[hadoop@master ~]$ touch 1.file

[hadoop@master ~]$ ls

1.file

[hadoop@master ~]$ hadoop fs -ls file:///home/hadoop/ ##查看本地文件

[hadoop@master ~]$ hadoop fs -ls / ##查看hadoop文件

[hadoop@master ~]$ hadoop fs -mkdir /input1

[hadoop@master ~]$ hadoop fs -put /home/hadoop/1.file /input1 ##上传本地文件

[hadoop@master ~]$ hadoop fs -ls /input1

Found 1 items

-rw-r--r--   2 hadoop supergroup          0 2018-05-31 07:38 /input1/1.file

[hadoop@master ~]$ hadoop fs -cat /input1/1.file ##查看hadoop文件内容

[hadoop@master ~]$ hadoop fs -cat file:///home/hadoop/1.file ##查看本地文件内容

[hadoop@master ~]$ hadoop fs -get /input1/1.file /tmp ##下载hadoop文件

[hadoop@master ~]$ ls /tmp/

1.file

[hadoop@master ~]$ hadoop fs -mkdir /input2

[hadoop@master ~]$ hadoop fs -mv /input1/1.file /input2/1.txt

[hadoop@master ~]$ hadoop fs -ls /input2

Found 1 items

-rw-r--r--   2 hadoop supergroup          0 2018-05-31 07:38 /input2/1.txt

[hadoop@master ~]$ hadoop fs -cp /input2/1.txt /input2/2.txt

[hadoop@master ~]$ hadoop fs -ls /input2

Found 2 items

-rw-r--r--   2 hadoop supergroup          0 2018-05-31 07:38 /input2/1.txt

-rw-r--r--   2 hadoop supergroup          0 2018-05-31 08:01 /input2/2.txt

[hadoop@master ~]$ hadoop fs -rm /input2/2.txt ##删除单个文件

18/05/31 08:01:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.

Deleted /input2/2.txt

[hadoop@master ~]$ hadoop fs -ls /input2

Found 1 items

-rw-r--r--   2 hadoop supergroup          0 2018-05-31 07:38 /input2/1.txt

[hadoop@master ~]$ hadoop fs -rmr /input2/ ##递归删除目录

rmr: DEPRECATED: Please use 'rm -r' instead.

18/05/31 08:06:23 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.

Deleted /input2

[hadoop@master ~]$ hadoop fs -ls /

Found 1 items

drwxr-xr-x   - hadoop supergroup          0 2018-05-31 07:58 /input1

[hadoop@master ~]$ hadoop fs -test -e /input1/ ##查看文件或目录是否存在,存在返回值为0,不存在返回值为1

[hadoop@master ~]$ echo $?

0

[hadoop@master ~]$ hadoop fs -test -e /input1/2.file

[hadoop@master ~]$ echo $?

1

[hadoop@master ~]$ hadoop fs -du /input1 ##查看目录中文件的所有文件的大小

0  /input1/2.file._COPYING_

[hadoop@master ~]$ hadoop fs -du -s /input1 ##查看目录本身的大小

0  /input1

[hadoop@master ~]$ hadoop fs -expunge ##清空回收站

[hadoop@master ~]$ hadoop fs -chmod 777 /input1

[hadoop@master ~]$ hadoop fs -chown hadoop:hadoop /input1

[hadoop@master ~]$ hadoop fs -ls /

Found 1 items

drwxrwxrwx   - hadoop hadoop          0 2018-05-31 07:58 /input1

猜你喜欢

转载自blog.csdn.net/Richardlygo/article/details/82118761