导航:首页 > 文件处理 > hdfs解压缩命令

hdfs解压缩命令

发布时间:2022-11-22 09:12:58

Ⅰ 简述一下hdfs的数据压缩算法,工作中用的是哪种算法,为什么

1、在HDFS之上将数据压缩好后,再存储到HDFS
2、在HDFS内部支持数据压缩,这里又可以分为几种方法:
2.1、压缩工作在DataNode上完成,这里又分两种方法:
2.1.1、数据接收完后,再压缩
这个方法对HDFS的改动最小,但效果最低,只需要在block文件close后,调用压缩工具,将block文件压缩一下,然后再打开block文件时解压一下即可,几行代码就可以搞定
2.1.2、边接收数据边压缩,使用第三方提供的压缩库
效率和复杂度折中方法,Hook住系统的write和read操作,在数据写入磁盘之前,先压缩一下,但write和read对外的接口行为不变,比如:原始大小为100KB的数据,压缩后大小为10KB,当写入100KB后,仍对调用者返回100KB,而不是10KB
2.2、压缩工作交给DFSClient做,DataNode只接收和存储
这个方法效果最高,压缩分散地推给了HDFS客户端,但DataNode需要知道什么时候一个block块接收完成了。
推荐最终实现采用2.2这个方法,该方法需要修改的HDFS代码量也不大,但效果最高。

Ⅱ ftp提取文件到hdfs

实际场景中,我们经常需要通过ftp协议把不同数据源的文件统一汇入到hdfs数据中心,经过实践,有以下的三种方法,分别列出其优缺点及适用场景。

1、 先把文件ftp到本地,然后用命令hdfsdfs –put [local_path] [hdfs_path]

优点:文件在本地可以进行本地化的一系列操作后,再放回hdfs中

缺点:文件传输经过两层,并且从源服务器到本地提取是单机串行,比较消耗时间。

适用于文件放入hfds前需要预处理的情景,如:.zip压缩文件不被hadoop支持的,所以我们可以先在本地转压缩方式然后再放入hdfs中。

2、 hdfs dfs –cp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]

优点:简单,提取速度快

缺点:CLI执行不会显示进度

适用场景:适用于小文件的ftp拷贝。

3、 hadoop distcp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]

优点:简单,能显示拷贝进度,并且是分布式提取的,数据比较快。

缺点: 如果拷贝的文件是不断有其他程序写入,会报错,因为该命令最后要对数据进行checksum导致两边不一致,当然,该命令是主要用于集群间拷贝的。

适用场景:大量文件或大文件的拷贝。

Ⅲ HDFS文件

Hadoop支持的文件系统由很多(见下图),HDFS只是其中一种实现。java抽象类 org.apache.hadoop.fs.FileSystem 定义了Hadoop中一个文件系统的客户端接口,并且该抽象类有几个具体实现。Hadoop一般使用URI(下图)方案来选取合适的文件系统实例进行交互。

特别的,HDFS文件系统的操作可以使用 FsSystem shell 、客户端(http rest api、Java api、C api等)。

FsSystem shell 的用法基本同本地shell类似,命令可参考 FsSystem shell

Hadoop是用Java写的,通过Java Api( FileSystem 类)可以调用大部分Hadoop文件系统的交互操作。更详细的介绍可参考 hadoop Filesystem 。

非Java开发的应用可以使用由WebHDFS协议提供的HTTP REST API,但是HTTP比原生的Java客户端要慢,所以不到万不得已尽量不要使用HTTP传输特大数据。通过HTTP来访问HDFS有两种方法:

两种如图

在第一种情况中,namenode和datanode内嵌的web服务作为WebHDFS的端节点运行(是否启用WebHDFS可通过dfs.webhdfs.enabled设置,默认为true)。文件元数据在namenode上,文件读写操作首先被发往namenode,有namenode发送一个HTTP重定向至某个客户端,指示以流的方式传输文件数据的目的或源datanode。

第二种方法依靠一个或多个独立代理服务器通过HTTP访问HDFS。所有集群的网络通信都需要通过代理,因此客户端从来不直接访问namenode或datanode。使用代理后可以使用更严格的防火墙策略和带宽策略。

HttpFs代理提供和WebHDFS相同的HTTP接口,这样客户端能够通过webhdfs URI访问接口。HttpFS代理启动独立于namenode和datanode的守护进程,使用httpfs.sh 脚本,默认在一个不同的端口上监听(14000)。

下图描述了

读文件时客户端与 HDFS 中的 namenode, datanode 之间的数据流动。

对上图的解释如下:

在读取过程中, 如果 FSDataInputStream 在和一个 datanode 进行交流时出现了一个错误,他就去试一试下一个最接近的块,他当然也会记住刚才发生错误的 datanode 以至于之后不会再在这个 datanode 上进行没必要的尝试。 DFSInputStream 也会在 datanode 上传输出的数据上核查检查数(checknums).如果损坏的块被发现了, DFSInputStream 就试图从另一个拥有备份的 datanode 中去读取备份块中的数据。

在这个设计中一个重要的方面就是客户端直接从 datanode 上检索数据,并通过 namenode 指导来得到每一个块的最佳 datanode。这种设计允许 HDFS 扩展大量的并发客户端,因为数据传输只是集群上的所有 datanode 展开的。期间,namenode 仅仅只需要服务于获取块位置的请求(块位置信息是存放在内存中,所以效率很高)。如果不这样设计,随着客户端数据量的增长,数据服务就会很快成为一个瓶颈。

我们知道,相对于客户端(之后就是 maprece task 了),块的位置有以下可能性:

我们认为他们对于客户端的带宽递减,距离递增(括号中表示距离)。示意图如下:

如果集群中的机器都在同一个机架上,我们无需其他配置,若集群比较复杂,由于hadoop无法自动发现网络拓扑,所以需要额外配置网络拓扑。

基本读取程序,将文件内容输出到console

FileSystemCat

随机读取

展开原码

下图描述了写文件时客户端与 HDFS 中的 namenode, datanode 之间的数据流动。

对上图的解释如下:

如果在任何一个 datanode 在写入数据的时候失败了,接下来所做的一切对客户端都是透明的:首先, pipeline 被关闭,在确认队列中的剩下的包会被添加进数据队列的起始位置上,以至于在失败的节点下游的任 何节点都不会丢失任何的包。然后与 namenode 联系后,当前在一个好的 datanode 会联系 namenode, 给失败节点上还未写完的块生成一个新的标识ID, 以至于如果这个失败的 datanode 不久后恢复了,这个不完整的块将会被删除。失败节点会从 pipeline 中移除,然后剩下两个好的 datanode 会组成一个的新的 pipeline ,剩下的 这些块的包(也就是刚才放在数据队列队首的包)会继续写进 pipeline 中好的 datanode 中。最后,namenode 注意到块备份数小于规定的备份数,他就安排在另一个节点上创建完成备份,直接从已有的块中复制就可以。然后一直到满足了备份数( dfs.replication )。如果有多个节点的写入失败了,如果满足了最小备份数的设置( dfs.namenode.repliction.min ),写入也将会成功,然后剩下的备份会被集群异步的执行备份,直到满足了备份数( dfs.replication )。

创建目录

文件压缩有两大好处:

Hadoop 对于压缩格式的是自动识别。如果我们压缩的文件有相应压缩格式的扩展名(比如 lzo,gz,bzip2 等)。Hadoop 会根据压缩格式的扩展名自动选择相对应的解码器来解压数据,此过程完全是 Hadoop 自动处理,我们只需要确保输入的压缩文件有扩展名。

Hadoop中有多种压缩格式、算法和工具,下图列出了常用的压缩方法。

表中的“是否可切分”表示对应的压缩算法是否支持切分,也就是说是否可以搜索数据流的任意位置并进一步往下读取数据,可切分的压缩格式尤其适合MapRece。

所有的压缩算法都需要权衡空间/时间:压缩和解压缩速度更快,其代价通常是只能节省少量的空间。不同的压缩工具有不同的特性:

更详细的比较如下

1.压缩性能比较

2.优缺点

另外使用hadoop原生(native)类库比其他java实现有更快的压缩和解压缩速度。特征比较如下:

使用容器文件格式结合压缩算法也能更好的提高效率。顺序文件、Arvo文件、ORCFiles、Parqurt文件同时支持压缩和切分。

压缩举例(Java)

压缩

解压缩

六、文件序列化

序列化是指将结构化数据转换为字节流以便在网络上传输或写到磁盘进行永久存储。反序列化狮子将字节流转换回结构化对象的逆过程。

序列化用于分布式数据处理的两大领域:进程间通信和永久存储。

对序列化的要求时是格式紧凑(高效使用存储空间)、快速(读写效率高)、可扩展(可以透明地读取老格式数据)且可以互操作(可以使用不同的语言读写数据)。

Hadoop使用的是自己的序列化格式 Writable ,它绝对紧凑、速度快,但不太容易用java以外的语言进行扩展或使用。

当然,用户也可以使用其他序列化框架或者自定义序列化方式,如 Avro 框架。

Hadoop内部还使用了 Apache Thrift 和 Protocal Buffers 来实现RPC和数据交换。

Ⅳ 搭建hadoop集群,常用配置文件是什么,以及配置哪些属性

一. 简介

参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功。下面就把详细的安装步骤叙述一下。我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择2.7.1版本。(前边主要介绍单机版的配置,集群版是在单机版的基础上,主要是配置文件有所不同,后边会有详细说明)

二. 准备工作

2.1 创建用户

创建用户,并为其添加root权限,经过亲自验证下面这种方法比较好。

1 sudo adser hadoop2 sudo vim /etc/sudoers3 # 修改内容如下:4 root ALL = (ALL)ALL5 hadoop ALL = (ALL)ALL

给hadoop用户创建目录,并添加到sudo用户组中,命令如下:

1 sudo chown hadoop /home/hadoop2 # 添加到sudo用户组3 sudo adser hadoop sudo

最后注销当前用户,使用新创建的hadoop用户登陆。

2.2安装ssh服务

ubuntu中默认是没有装ssh server的(只有ssh client),所以先运行以下命令安装openssh-server。安装过程轻松加愉快~

sudo apt-get install ssh openssh-server

2.3 配置ssh无密码登陆

直接上代码:执行完下边的代码就可以直接登陆了(可以运行ssh localhost进行验证)

1 cd ~/.ssh# 如果找不到这个文件夹,先执行一下 "ssh localhost"2 ssh-keygen -t rsa3 cp id_rsa.pub authorized_keys

注意:

这里实现的是无密登陆自己,只适用与hadoop单机环境。如果配置Hadoop集群设置Master与Slave的SSH无密登陆可

三. 安装过程

3.1 下载hadoop安装包

有两种下载方式:

1. 直接去官网下载:

2. 使用wget命令下载:

3.2 配置hadoop

1. 解压下载的hadoop安装包,并修改配置文件。我的解压目录是(/home/hadoop/hadoop-2.7.1),即进入/home/hadoop/文件夹下执行下面的解压缩命令。

tar -zxvf hadoop-2.7.1.tar.gz

2. 修改配置文件:(hadoop2.7.1/etc/hadoop/)目录下,hadoop-env.sh,core-site.xml,mapred-site.xml.template,hdfs-site.xml。

(1). core-site.xml 配置:其中的hadoop.tmp.dir的路径可以根据自己的习惯进行设置。

至此,wordcount demo 运行结束。

六. 总结

配置过程遇到了很多问题,最后都一一解决,收获很多,特此把这次配置的经验分享出来,方便想要配置hadoop环境的各位朋友~

(Hadoop集群安装配置过程基本和单机版是一样的,主要是在配置文件方面有所区别,以及ssh无密登陆要求master和slave能够互相无密登陆。

Ⅳ 大数据:Hadoop入门

什么是大数据:
(1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如关系型数据库,数据仓库等。这里“大”是一个什么量级呢?如在阿里巴巴每天处理数据达到20PB(即20971520GB).
2.大数据的特点:
(1.)体量巨大。按目前的发展趋势来看,大数据的体量已经到达PB级甚至EB级。
(2.)大数据的数据类型多样,以非结构化数据为主,如网络杂志,音频,视屏,图片,地理位置信息,交易数据,社交数据等。
(3.)价值密度低。有价值的数据仅占到总数据的一小部分。比如一段视屏中,仅有几秒的信息是有价值的。
(4.)产生和要求处理速度快。这是大数据区与传统数据挖掘最显着的特征。
3.除此之外还有其他处理系统可以处理大数据。
Hadoop (开源)
Spark(开源)
Storm(开源)
MongoDB(开源)
IBM PureDate(商用)
Oracle Exadata(商用)
SAP Hana(商用)
Teradata AsterData(商用)
EMC GreenPlum(商用)
HP Vertica(商用)
注:这里我们只介绍Hadoop。
二:Hadoop体系结构
Hadoop来源:
Hadoop源于Google在2003到2004年公布的关于GFS(Google File System),MapRece和BigTable的三篇论文,创始人Doug Cutting。Hadoop现在是Apache基金会顶级项目,“
Hadoop”一个虚构的名字。由Doug Cutting的孩子为其黄色玩具大象所命名。
Hadoop的核心:
(1.)HDFS和MapRece是Hadoop的两大核心。通过HDFS来实现对分布式储存的底层支持,达到高速并行读写与大容量的储存扩展。
(2.)通过MapRece实现对分布式任务进行处理程序支持,保证高速分区处理数据。
3.Hadoop子项目:
(1.)HDFS:分布式文件系统,整个Hadoop体系的基石。
(2.)MapRece/YARN:并行编程模型。YARN是第二代的MapRece框架,从Hadoop 0.23.01版本后,MapRece被重构,通常也称为MapRece V2,老MapRece也称为 MapRece V1。
(3.)Hive:建立在Hadoop上的数据仓库,提供类似SQL语音的查询方式,查询Hadoop中的数据,
(5.)HBase:全称Hadoop Database,Hadoop的分布式的,面向列的数据库,来源于Google的关于BigTable的论文,主要用于随机访问,实时读写的大数据。
(6.)ZooKeeper:是一个为分布式应用所设计的协调服务,主要为用户提供同步,配置管理,分组和命名等服务,减轻分布式应用程序所承担的协调任务。
还有其它特别多其它项目这里不做一一解释了。
三:安装Hadoop运行环境
用户创建:
(1.)创建Hadoop用户组,输入命令:
groupadd hadoop
(2.)创建hser用户,输入命令:
useradd –p hadoop hser
(3.)设置hser的密码,输入命令:
passwd hser
按提示输入两次密码
(4.)为hser用户添加权限,输入命令:
#修改权限
chmod 777 /etc/sudoers
#编辑sudoers
Gedit /etc/sudoers
#还原默认权限
chmod 440 /etc/sudoers
先修改sudoers 文件权限,并在文本编辑窗口中查找到行“root ALL=(ALL)”,紧跟后面更新加行“hser ALL=(ALL) ALL”,将hser添加到sudoers。添加完成后切记还原默认权限,否则系统将不允许使用sudo命令。
(5.)设置好后重启虚拟机,输入命令:
Sudo reboot
重启后切换到hser用户登录
安装JDK
(1.)下载jdk-7u67-linux-x64.rpm,并进入下载目录。
(2.)运行安装命令:
Sudo rpm –ivh jdk-7u67-linux-x64.rpm
完成后查看安装路径,输入命令:
Rpm –qa jdk –l
记住该路径,
(3.)配置环境变量,输入命令:
Sudo gedit /etc/profile
打开profile文件在文件最下面加入如下内容
export JAVA_HOME=/usr/java/jdk.7.0.67
export CLASSPATH=$ JAVA_HOME/lib:$ CLASSPATH
export PATH=$ JAVA_HOME/bin:$PATH
保存后关闭文件,然后输入命令使环境变量生效:
Source /etc/profile
(4.)验证JDK,输入命令:
Java –version
若出现正确的版本则安装成功。
配置本机SSH免密码登录:
(1.)使用ssh-keygen 生成私钥与公钥文件,输入命令:
ssh-keygen –t rsa
(2.)私钥留在本机,公钥发给其它主机(现在是localhost)。输入命令:
ssh--id localhost
(3.)使用公钥来登录输入命令:
ssh localhost
配置其它主机SSH免密登录
(1.)克隆两次。在VMware左侧栏中选中虚拟机右击,在弹出的快捷键菜单中选中管理---克隆命令。在克隆类型时选中“创建完整克隆”,单击“下一步”,按钮直到完成。
(2.)分别启动并进入三台虚拟机,使用ifconfig查询个主机IP地址。
(3.)修改每台主机的hostname及hosts文件。
步骤1:修改hostname,分别在各主机中输入命令。
Sudo gedit /etc/sysconfig/network
步骤2:修改hosts文件:
sudo gedit /etc/hosts
步骤3:修改三台虚拟机的IP
第一台对应node1虚拟机的IP:192.168.1.130
第二台对应node2虚拟机的IP:192.168.1.131
第三台对应node3虚拟机的IP:192.168.1.132
(4.)由于已经在node1上生成过密钥对,所有现在只要在node1上输入命令:
ssh--id node2
ssh--id node3
这样就可以将node1的公钥发布到node2,node3。
(5.)测试SSH,在node1上输入命令:
ssh node2
#退出登录
exit
ssh node3
exit
四:Hadoop完全分布式安装
1. Hadoop有三种运行方式:
(1.)单机模式:无须配置,Hadoop被视为一个非分布式模式运行的独立Java进程
(2.)伪分布式:只有一个节点的集群,这个节点即是Master(主节点,主服务器)也是Slave(从节点,从服务器),可在此单节点上以不同的java进程模拟分布式中的各类节点
(3.)完全分布式:对于Hadoop,不同的系统会有不同的节点划分方式。
2.安装Hadoop
(1.)获取Hadoop压缩包hadoop-2.6.0.tar.gz,下载后可以使用VMWare Tools通过共享文件夹,或者使用Xftp工具传到node1。进入node1 将压缩包解压到/home/hser目录下,输入命令: #进入HOME目录即:“/home/hser”
cd ~
tar –zxvf hadoop-2.6.0.tar.gz
(2.)重命名hadoop输入命令:
mv hadoop-2.6.0 hadoop
(3.)配置Hadoop环境变量,输入命令:
Sudo gedit /etc/profile
将以下脚本加到profile内:
#hadoop
export HADOOP_HOME=/home/hser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
保存关闭,最后输入命令使配置生效
source /etc/profile
注:node2,和node3都要按照以上配置进行配置。
3.配置Hadoop
(1.)hadoop-env.sh文件用于指定JDK路径。输入命令:
[hser@node1 ~]$ cd ~/hadoop/etc/hadoop
[hser@node1 hadoop]$ gedit hadoop-env.sh
然后增加如下内容指定jDK路径。
export JAVA_HOME=/usr/java/jdk1.7.0_67
(2.)打开指定JDK路径,输入命令:
export JAVA_HOME=/usr/java/jdk1.7.0_67
(4.)core-site.xml:该文件是Hadoop全局配置,打开并在元素中增加配置属性如下:

fs.defaultFs hdfs://node1:9000 hadoop.tmp.dir file:/home/hser/hadoop/tmp 这里给出了两个常用的配置属性,fs.defaultFS表示客户端连接HDFS时,默认路径前缀,9000是HDFS工作的端口。Hadoop.tmp.dir如不指定会保存到系统的默认临时文件目录/tmp中。 (5.)hdfs-site.xml:该文件是hdfs的配置。打开并在元素中增加配置属性。 (6.)mapred-site.xml:该文件是MapRece的配置,可从模板文件mapred-site.xml.template中复制打开并在元素中增加配置。 (7.)yarn-site.xml:如果在mapred-site.xml配置了使用YARN框架,那么YARN框架就使用此文件中的配置,打开并在元素中增加配置属性。 (8.)复制这七个命令到node2,node3。输入命令如下: scp –r /home/hser/hadoop/etc/hadoop/ hser@node2:/home/hser/hadoop/etc/ scp –r /home/hser/hadoop/etc/hadoop/ hser@node3:/home/hser/hadoop/etc/ 4.验证: 下面验证hadoop是否正确 (1.)在Master主机(node1)上格式化NameNode。输入命令: [hser@node1 ~]$ cd ~/hadoop [hser@node1 hadoop]$ bin/hdfs namenode –format (2)关闭node1,node2 ,node3,系统防火墙并重启虚拟机。输入命令: service iptables stop sudo chkconfig iptables off reboot (3.)输入以下启动HDFS: [hser@node1 ~]$ cd ~/hadoop (4.)启动所有 [hser@node1 hadoop]$ sbin/start-all.sh (5.)查看集群状态: [hser@node1 hadoop]$ bin/hdfs dfsadmin –report (6.)在浏览器中查看hdfs运行状态,网址:http://node1:50070 (7.)停止Hadoop。输入命令: [hser@node1 hadoop]$ sbin/stop-all.sh 五:Hadoop相关的shell操作 (1.)在操作系统中/home/hser/file目录下创建file1.txt,file2.txt可使用图形界面创建。 file1.txt输入内容: Hello World hi HADOOP file2.txt输入内容 Hello World hi CHIAN (2.)启动hdfs后创建目录/input2 [hser@node1 hadoop]$ bin/hadoop fs –mkdir /input2 (3.)将file1.txt.file2.txt保存到hdfs中: [hser@node1 hadoop]$ bin/hadoop fs –put -/file/file*.txt /input2/ (4.)[hser@node1 hadoop]$ bin/hadoop fs –ls /input2

Ⅵ spark、hive、impala、hdfs的常用命令

对spark、hive、impala、hdfs的常用命令作了如下总结,欢迎大家补充!

1. Spark的使用:

以通过SecureCRT访问IP地址:10.10.234.198 为例进行说明:

先输入:ll //查询集群是否装有spark

>su - mr

>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""

>show databases; //显示其中数据库,例如

>use bigmax; //使用数据库bigmax

>show tables; //查询目录中所有的表

>desc formatted TableName; //显示表的详细信息,包括分区、字段、地址等信息

>desc TableName; //显示表中的字段和分区信息

>select count(*) from TableName; //显示表中数据数量,可以用来判断表是否为空

>drop table TableName; //删除表的信息

>drop bigmax //删除数据库bigmax

>describe database zxvmax //查询数据库zxvmax信息

创建一个表

第一步:

>create external table if not exists lte_Amaze //创建一个叫lte_Amaze的表

( //括号中每一行为表中的各个字段的名称和其所属的数据类型,并用空格隔开

DateTime String,

MilliSec int,

Network int,

eNodeBID int,

CID int,

IMSI String,

DataType int,

AoA int,

ServerRsrp int,

ServerRsrq int,

TA int,

Cqi0 Tinyint,

Cqi1 Tinyint //注意,最后一个字段结束后,没有逗号

)

partitioned by (p_date string, p_hour INT) //以p_date和p_hour作为分区

row format delimited fields terminated by ',' /*/*表中行结构是以逗号作为分隔符,与上边的表中字段以逗号结尾相一致*/

stored as textfile; //以文本格式进行保存

第二步:添加分区,指定分区的位置

>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';

//添加lte_Amaze表中分区信息,进行赋值。

//并制定分区对应目录/lte/nds/mr下表lte_nds_cdt_uedetail中对应分区信息

第三步:察看添加的结果

>show partitions lte_Amaze; //显示表的分区信息

2. hdfs使用:

#su - hdfs //切换到hdfs用户下 、

#hadoop fs –ls ///查看进程
# cd /hdfs/bin //进入hdfs安装bin目录
>hadoop fs -ls /umtsd/cdt/ //查询/umtsd/cdt/文件目录
>hadoop fs -mkdir /umtsd/test //在/umtsd目录下创建test目录
>hadoop fs -put /home/data/u1002.csv /impala/data/u5002 //将home/data/u1002.csv这个文件put到hdfs文件目录上。put到hdfs上的数据文件以逗号“,”分隔符文件(csv),数据不论类型,直接是数据,没有双引号和单引号
>hadoop fs -rm /umtsd/test/test.txt //删除umtsd/test目录下的test.txt文件
>hadoop fs -cat /umtsd/test/test.txt //查看umtsd/test目录下的test.txt文件内容

3hive操作使用:
#su - mr //切换到mr用户下
#hive //进入hive查询操作界面
hive>show tables; //查询当前创建的所有表
hive>show databases; //查询当前创建的数据库
hive>describe table_name; {或者desc table_name}//查看表的字段的定义和分区信息,有明确区分(impala下该命令把分区信息以字段的形式显示出来,不怎么好区分)
hive> show partitions table_name; //查看表对应数据现有的分区信息,impala下没有该命令
hive> quit;//退出hive操作界面

hive>desc formatted table_name; 查看表结构,分隔符等信息

hive> alter table ceshi change id id int; 修改表的列数据类型 //将id数据类型修改为int 注意是两个id

hive> SHOW TABLES '.*s'; 按正条件(正则表达式)显示表,

[mr@aico ~]$ exit; 退出mr用户操作界面,到[root@aico]界面

impala操作使用:
#su - mr //切换到mr用户下
#cd impala/bin //进入impala安装bin目录
#/impala/bin> impala-shell.sh -i 10.10.234.166/localhost //进入impala查询操作界面
[10.10.234.166:21000] >show databases; //查询当前创建的数据库
[10.10.234.166:21000] >use database_name; //选择使用数据库,默认情况下是使用default数据库
[10.10.234.166:21000] > show tables; //查询当前数据库下创建的所有表
[10.10.234.166:21000] >describe table_name; //查看表的字段的定义,包括分区信息,没有明确区分
[10.10.234.166:21000] > describe formatted table_name; //查看表对应格式化信息,包括分区,所属数据库,创建用户,创建时间等详细信息。
[10.10.234.166:21000] >refresh table_name; //刷新一下,保证元数据是最新的
[10.10.234.166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/
MREMITABLE/20130927/rncid=487' //添加分区信息,具体的表和数据的对应关系
[10.10.234.166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //删除现有的分区,数据与表的关联
[10.10.234.166:21000] >quit; //退出impala操作界面

[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,进入impala 查询操作界面

[aicod:21000] > 按两次tab键,查看可以用的命令

alter describe help profile shell values

connect drop history quit show version

create exit insert select unset with

desc explain load set use

Ⅶ HDFS操作命令

HDFS命令基本格式:hadoop fs -cmd < args >

表格:

注意:以上表格中路径包括hdfs中的路径和linux中的路径。对于容易产生歧义的地方,会特别指出“linux路径”或者“hdfs路径”。如果没有明确指出,意味着是hdfs路径。

HDFS有一个默认的工作目录/user/$USER,其中$USER是用户的登录用户名。不过目录不会自动建立,需要mkdir建立它
命令格式:hadoop fs -mkdir

注意:支持级联创建新目录,Hadoop的mkdir命令会自动创建父目录,类似于带-p的linux命令

put命令从本地文件系统中 复制单个或多个 源路径到目标文件系统,也支持从标准输入设备中读取输入并写入目标文件系统。分为本地上传和上传到HDFS中。
命令格式:hadoop fs -put filename

最后一个参数是句点,相当于放入了默认的工作目录,等价于 hadoop fs -put example.txt /user/chen

上传文件时,文件首先复制到DataNode上,只有所有的DataNode都成功接收完数据,文件上传才是成功的。
命令格式:hadoop dfs put filename newfilename

从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从 标准输入 中读取输入写入目标文件系统。

采用-ls命令列出HDFS上的文件。在HDFS中未带参数的-ls命令没有返回任何值,它默认返回HDFS的home目录下
的内容。在HDFS中,没有当前工作目录这样一个概念,也没有cmd这样的命令。
命令格式:user@NameNode:hadoop$ bin/hadoop dfs -ls
如:

通过“-ls 文件夹名” 命令浏览HDFS下文件夹中的文件
命令格式:hadoop dfs -ls 文件夹名

通过该命令可以查看in文件夹中的所有文档文件

通过“-cat 文件名”命令查看HDFS下文件夹中某个文件的内容
命令格式:hadoop$ bin/hadoop dfs -cat 文件名

通过这个命令可以查看in文件夹中所有文件的内容

通过“-get 文件按1 文件2”命令将HDFS中某目录下的文件复制到本地系统的某文件中,并对该文件重新命名。
命令格式:hadoop dfs -get 文件名 新文件名

-get 命令与-put命令一样,既可以操作目录,也可以操作文件

通过“-rmr 文件”命令删除HDFS下的文件
命令格式:hadoop$ bin/hadoop dfs -rmr 文件

-rmr 删除文档命令相当于delete的递归版本。

通过-format命令实现HDFS格式化
命令格式:user@NameNode:hadoop$ bin/hadoop NameNode -format

通过运行start-dfs.sh,就可以启动HDFS了
命令格式:user@NameNode:hadoop$ bin/ start-dfs.sh

当需要退出HDFS时,通过stop-dfs.sh 就可以关闭HDFS
命令格式:user@NameNode:hadoop$ bin/ stop-dfs.sh

HDFS的命令远不止这些,对于其他操作,可以通过-help commandName 命令列出清单。下面列举一些命令进行说明。

(1)chgrp改变文件所属的组命令
chgrp命令的用途是:更改文件或目录的组所有权。
语法格式:hadoop fs -charg [-R] GROUP URL .....
使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。

(2)chmod改变文件的权限
chmod用于改变文件或目录的访问权限,这个Linux系统管理员最常用的命令之一。
使用方法:hadoop fs -chmod [-R] ...
使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者是超级用户

(3)chown改变文件的拥有者
chown命令改变文件的拥有者。
使用方法:hadoop fs -chown [-R]....
使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。

(4)FromLocal命令
除了限定 源路径 是只能是一个 本地文件 外,其他方面和put命令相似。
使用方法:hadoop fs -FromLocal <localsrc> URI

(5)ToLocal命令
除了限定 目标路径 是一个 本地文件 外,其他方面和get命令类似。
使用方法:hadoop fs -ToLocal {-ignorecrc} {-crc} URI <localdst>

(6)cp命令
cp命令是将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。
使用方法:hadoop fs -cp URI [URI....] <dest>

返回值:成功返回0 ,失败返回-1

(7)命令
命令显示目录中 所有文件的大小 ,或者当只指定一个文件时,显示此文件的大小
使用方法:hadoop fs - URI [URI........]

返回值
成功返回0,失败返回-1

(8)s命令
s是显示 文件大小 的命令。
使用方法:hadoop fs -s <args>

(9)expunge命令
expunge是清空回收站的命令
使用方法:hadoop fs -expunge

(10)get命令
get是复制文件到本地文件系统的命令
使用方法:hadoop fs -get [-ignorecrc] [-crc] <localdst>
可用-ignorecrc选项复制CRC校验失败的文件:使用-CRC选项复制文件以及CRC信息。

返回值
成功返回0,失败返回-1

(11)getmerge命令
getmerge命令用于接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件合并成本地目标文件。
使用方法:hadoop fs -getmerge <src> <localdst> [addnl]
参数说明:addl是可选的,用于指定在每个文件结尾添加一个换行符;

假设在你的hdfs集群上有一个/user/hadoop/output目录
里面有作业执行的结果(多个文件组成)part-000000,part-000001,part-000002

然后就可以在本地使用vi local_file查看内容了

(12)ls命令
ls命令查看当前目录下的信息
使用方法:hadoop fs -ls <args>
如果是 文件 ,则按照如下格式返回文件信息:
文件名 <副本数>文件大小 修改日期 修改时间 权限 用户ID 组ID

如果是 目录 ,则返回它直接子文件的一个列表,就像在UNIX中一样。目录返回i额表的信息如下:
目录名<dir>修改日期 修改时间 权限 用户ID 组ID

返回值
成功返回0,失败返回-1

(13)lsr命令
lsr命令是-ls命令的递归版,类似于UNIX中的ls-r。
使用方法:hadoop fs -lsr <args>

(14)movefromLocal命令
复制一份本地文件到hdfs,当成功后,删除本地文件
使用方法:dfs -moveFromLocal <src> <dst>

(14.5)moveToLocal命令
类似于-get,但是当复制完成后,会删除hdfs上的文件
使用方法:moveToLocal <src> <localDest>

(15)mv命令
将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录
使用方法:hadoop fs -mv URI [URI.....] <dest>
备注:不允许在不同的文件系统间移动文件。

返回值
成功返回0,失败返回-1

(16)put 命令
put命令从本地文件系统中复制单个或多个源路径到目标文件系统,也支持从标准输入中读取输入写入目标文件系统
使用方法:hadoop fs -put <localsrc> .... <dst>

(17)rm命令
rm命令删除指定的文件,只删除非空目录和文件。
使用方法:hadoop fs -rm URI [URI......]
请参考rmr命令了解递归删除。

(18)rmr命令
rmr命令是delete命令的递归版本
使用方法:hadoop fs -rmr URI [URI.......]

返回值
成功返回0,失败返回-1

(19)setrep命令
setrep命令可以改变一个文件的副本系数。
使用方法:hadoop fs -setrep [-R] <path>
参数说明:-R 选项用于递归改变目录下所有文件的副本系数

返回值
成功返回0,失败返回-1

(20)stat命令
stat命令用于返回指定路径的统计信息
使用方法:hadoop fs -stat URI [URI......]

返回值
成功返回0,失败返回-1

(21)tail命令
tail命令将文件尾部1KB的内容输出到stdout。支持-f选项,行为和UNIX中一致
使用方法:hadoop fs -tail [-f] URI

返回值
成功返回0,失败返回-1

(22)test命令
test命令是检查命令,可以检查文件是否存在、文件的大小等。
使用方法:hadoop fs -test -[ezd] URI

(23)text命令
text命令用于将源文件输出问文本格式
使用方法:hadoop fs -text <src>
允许的格式是zip和TextRecordInputStream。

(24)touchz 命令
touchz命令用于创建一个0字节的空文件。
使用方法: hadoop fs -touchz URI [URI....]

返回值
成功返回0,失败返回-1

Ⅷ hadoop在Linux下的简单配置

实际生产环境中,员工不会直接登陆服务器,而是通过远程连接工具,进行远程登陆。那么就需要知道服务器的IP地址,一个用户名和密码。

1)安装(略)

2)连接虚拟机(前提是物理机能ping通虚拟机)

当我们频繁的在一台机器A上连接另外一台机器B时,不论是复制文件还是删除文件,或者是进行其他操作。那么都要使用机器B的用户名和密码。每次都需要输入密码,那么效率降低了。这个时候,如果可以不输入密码,还有一定的安全性,可以防止黑客在中间截取信息。那么就需要一种安全认证技术。

1)准备工作

2)测试

3)原理

[图片上传失败...(image-3835b9-1576065751546)]

在搭建HDFS的完全分布式集群时,需要以下环境要求:

1)说明

2)配置域名映射

1)准备工作

2)解压jdk到/opt/apps/

3)更名操作

4)配置环境变量

4.1)说明

4.2)配置

4.3)使当前窗口生效(或者reboot)

4.4)验证

1)解压缩

2)更名

3)配置

4)使当前窗口生效

5)验证

1)守护进程布局

2)配置文件的说明

1)配置core-site.xml

2)hdfs-site.xml

3)mapred-site.xml

4)yarn-site.xml

5)slaves文件:配置所有datanode节点的主机名

6)hadoop-env.sh

7)yarn-env.sh

1)说明,使用完整克隆,克隆manager

2)克隆步骤

3)修改新克隆机器的主机名

4)修改新克隆机器的IP地址

5)重启后,验证免密登陆认证是否有效

1)目的

2)格式化的命令

注意:一定要选择namenode所在的节点上进行格式化

1)开启集群的命令

2)使用jps查看节点上的守护进程

3)使用http协议查看分布式文件系统

5)暴力解决节点不正常的方式

3.1 常用指令:

4.1.1 解压hadoop-2.7.6.tar.gz到本地磁盘,如下图:

4.1.2 配置环境变量

4.1.3 由于Hadoop是在32位系统上编译的,并且对windows支持不好,所以需要把64的编译本地库文件(下图的两个文件),放入bin目录中。

10.1.4 验证环境变量是否生效:

10.1.5 如果报错:Error: JAVA_HOME is incorrectly set

为了方便开发,我们可以将相关的jar提取出来。

Ⅸ HDFS常用命令

hdfs dfs -linux命令 操作是一样
hadoop fs 等同于 hdfs dfs

如果压缩是false,一般需要自己编译 支持压缩,如果是使用CDH系列的,不用担心 。
自己编译可参考: https://segmentfault.com/a/1190000038464476?utm_source=sf-similar-article

hadoop 3.2.2的版本dfs.disk.balancer.enabled默认为true,以前的老版本默认值是false,这个参数可以在hdfs-site.xml 中修改。

命令:
hdfs diskbalancer -plan hadoop001 #生成计划

hdfs diskbalancer -execute hadoop001.plan.json #执行计划

Ⅹ 熟悉常用的 Linux 操作和 Hadoop 操作

1.切换到当前目录的上一级目录
cd ..
2.切换到当前登录 Linux 系统的用户自己的主文件夹
cd ~
3.进入/tmp 目录,创建目录 a1/a2/a3/a4。
mkdir a1/a2/a3/a4 -p
4.删除目录
rmdir a
rmdir a1/a2/a3/a4 -p
5.cp 命令:复制文件或目录
(1) 将当前用户的主文件夹下的文件.bashrc 复制到目录“/usr”下,并重命名为 bashrc1
sudo cp .bashrc /usr/bashrc1
(2) 在目录“/tmp”下新建目录 test,再把这个目录复制到“/usr”目录下
cd /tmp
mkdir test
sudo cp /tmp/test /usr -r
6.mv 命令:移动文件与目录,或更名
(1) 将“/usr”目录下的文件 bashrc1 移动到“/usr/test”目录下
sudo mv /usr/bashrc1 /usr/test
(2) 将“/usr”目录下的 test 目录重命名为 test2
sudo mv /usr/test /usr/test2
7.rm 命令:移除文件或目录
(1) 将“/usr/test2”目录下的 bashrc1 文件删除
sudo rm /usr/test2/bashrc1
(2) 将“/usr”目录下的 test2 目录删除
sudo rm -rf /usr/test2
8.cat 命令:查看文件内容查看当前用户主文件夹下的.bashrc 文件内容
cat .bashrc
9.tac 命令:反向查看文件内容反向查看当前用户主文件夹下的.bashrc 文件的内容
tac .bashrc
10.more 命令:一页一页翻动查看翻页查看当前用户主文件夹下的.bashrc 文件的内容
more .bashrc
11.head 命令:取出前面几行
(1) 查看当前用户主文件夹下.bashrc 文件内容前 20 行
head -n20 .bashrc
(2)查看当前用户主文件夹下.bashrc 文件内容,后面 50 行不显示,只显示前面几行
head -n -50 .bashrc
12.tail 命令:取出后面几行
(1)查看当前用户主文件夹下.bashrc 文件内容最后 20 行
tail -n20 .bashrc
(2)查看当前用户主文件夹下.bashrc 文件内容,并且只列出 50 行以后的数据
tail -n -50 .bashrc
13.touch 命令:修改文件时间或创建新文件
(1) 在“/tmp”目录下创建一个空文件 hello,并查看文件时间
touch hello
stat hello
(2)修改 hello 文件,将文件时间整为 5 天前
touch -d "2019-3-26" hello
stat hello
14.chown 命令:修改文件所有者权限将 hello 文件所有者改为 root 帐号,并查看属性
sudo chown root hello
ls -l hello
15.find 命令:文件查找找出主文件夹下文件名为.bashrc 的文件
find .bashrc
16.tar 命令:压缩命令
(1) 在根目录“/”下新建文件夹 test,然后在根目录“/”下打包成 test.tar.gz
tar -zcvf test.tar.gz test/
(2) 把上面的 test.tar.gz 压缩包,解压缩到“/tmp”目录
tar -zxvf test.tar.gz
17.grep 命令:查找字符串从“~/.bashrc”文件中查找字符串'examples'
grep -rn "examples" .bashrc
18.使用 hadoop 用户登录 Linux 系统,启动 Hadoop(Hadoop 的安装目录为“/usr/local/hadoop”),为 hadoop 用户在 HDFS 中创建用户目录“/user/hadoop”
./bin/hadoop fs -mkdir -p /usr/hadoop
19.接着在 HDFS 的目录“/user/hadoop”下,创建 test 文件夹,并查看文件列表
./bin/hdfs dfs -mkdir test
./bin/hadoop fs -ls
20.将 Linux 系统本地的“~/.bashrc”文件上传到 HDFS 的 test 文件夹中,并查看 test

./bin/hadoop fs -put ~/.bashrc test

./bin/hadoop fs -ls test
21.将 HDFS 文件夹 test 复制到 Linux 系统本地文件系统的“/usr/local/hadoop”目录下

参考: 1

阅读全文

与hdfs解压缩命令相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163