A. hadoop分布式每次都要重新启动吗
hadoop分布式每次都要重新启动
1
配置hosts文件,将主机名和对应IP地址映射。如图中Master、Slave1和Slave2是我们要搭建分布式环境的机器。Master为主机,Slavex为从机。
2
配置SSH的无密码登录:可新建专用用户hadoop进行操作,cd命令进入所属目录下,输入以下指令(已安装ssh)
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >>.ssh/authorized_keys
解释一下,第一条生成ssh密码的命令,-t 参数表示生成算法,有rsa和dsa两种;-P表示使用的密码,这里使用“”空字符串表示无密码。
第二条命令将生成的密钥写入authorized_keys文件。
这时输入 ssh localhost,弹出写入提示后回车,便可无密码登录本机。同理,将authorized_keys文件 通过 scp命令拷贝到其它主机相同目录下,则可无密码登录其它机器。
安装hadoop:安装方式很简单,下载安装包到所属目录下,使用
tar -zxvf 安装包名
进行解压,解压完毕可通过mv 命令重命名文件夹,安装至此完成。解压后的目录内容如图所示。
hadoop配置过程:要实现分布式环境,配置过程是最为重要的,
这里要涉及到的配置文件有7个:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
之后会分别介绍各个配置的的作用和配置关键
配置文件1:hadoop-env.sh
该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
配置文件2:yarn-env.sh
该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。
在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
配置文件3:slaves
该文件里面保存所有slave节点的信息,以本篇为例
写入以下内容(hosts里从机的主机名):
Slave1
Slave2
B. 大数据: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全局配置,打开并在
C. 如何删除每次运行hadoop命令的时输出目录
启动Hadoop
进入HADOOP_HOME目录。
执行sh bin/start-all.sh
关闭Hadoop
进入HADOOP_HOME目录。
执行sh bin/stop-all.sh
1、查看指定目录下内容
hadoop dfs –ls [文件目录]
eg: hadoop dfs –ls /user/wangkai.pt
2、打开某个已存在文件
hadoop dfs –cat [file_path]
eg:hadoop dfs -cat /user/wangkai.pt/data.txt
3、将本地文件存储至hadoop
hadoop fs –put [本地地址] [hadoop目录]
hadoop fs –put /home/t/file.txt /user/t
(file.txt是文件名)
4、将本地文件夹存储至hadoop
hadoop fs –put [本地目录] [hadoop目录]
hadoop fs –put /home/t/dir_name /user/t
(dir_name是文件夹名)
5、将hadoop上某个文件down至本地已有目录下
hadoop fs -get [文件目录] [本地目录]
hadoop fs –get /user/t/ok.txt /home/t
6、删除hadoop上指定文件
hadoop fs –rm [文件地址]
hadoop fs –rm /user/t/ok.txt
7、删除hadoop上指定文件夹(包含子目录等)
hadoop fs –rm [目录地址]
hadoop fs –rmr /user/t
8、在hadoop指定目录内创建新目录
hadoop fs –mkdir /user/t
9、在hadoop指定目录下新建一个空文件
使用touchz命令:
hadoop fs -touchz /user/new.txt
10、将hadoop上某个文件重命名
使用mv命令:
hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)
11、将hadoop指定目录下所有内容保存为一个文件,同时down至本地
hadoop dfs –getmerge /user /home/t
12、将正在运行的hadoop作业kill掉
hadoop job –kill [job-id]
D. 什么情况下命令 "hadoop fs
在hadoop环境下执行hadoopfs--help,里面有相关的命令提示,简单的有ls,,cp,mv等
跟shell一样,只不过是查看或者操作hdfs文件
Usage:javaFsShell
[-ls<path>]
[-lsr<path>]
[-<path>]
[-s<path>]
[-count[-q]<path>]
[-mv<src><dst>]
[-cp<src><dst>]
[-ln<src><dst>]
[-rm<path>]
[-rmr<path>]
[-expunge]
[-put<localsrc>...<dst>]
[-FromLocal<localsrc>...<dst>]
[-moveFromLocal<localsrc>...<dst>]
[-get[-ignoreCrc][-crc][-repair]<src><localdst>]
[-getmerge[-addnl]<src><localdst>|-getmerge<src><localdst>[addnl]]
[-cat<src>]
[-text<src>]
[-ToLocal[-ignoreCrc][-crc][-repair]<src><localdst>]
[-SeqFileToLocal[-ignoreLen]<srcFile><localDstFile>]
[-moveToLocal[-crc]<src><localdst>]
[-mkdir<path>]
[-setrep[-R][-w][-d]<rep><path/file>]
[-setAcl<user><path><permission>]
[-getAcl[-u<user>][-p<path>]]
[-removeAcl[-u<user>][-p<path>]]
[-touchz<path>]
[-test-[ezd]<path>]
[-stat[format]<path>]
[-tail[-f]<file>]
[-chmod[-R]<MODE[,MODE]...|OCTALMODE>PATH...]
[-chown[-R][OWNER][:[GROUP]]PATH...]
[-chgrp[-R]GROUPPATH...]
[-help[cmd]]
自己试试就可以了,不复杂
E. 如何配置Hadoop环境
安装前设置
在安装Hadoop之前,需要进入Linux环境下,连接Linux使用SSH(安全Shell)。按照下面提供的步骤设立Linux环境。
创建一个用
在开始时,建议创建一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统。按照下面给出的步骤来创建用户:
使用 “su” 命令开启root .
创建用户从root帐户使用命令 “useradd username”.
现在,可以使用命令打开一个现有的用户帐户“su username”.
打开Linux终端,输入以下命令来创建一个用户。
$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd
SSH设置和密钥生成
SSH设置需要在集群上做不同的操作,如启动,停止,分布式守护shell操作。认证不同的Hadoop用户,需要一种用于Hadoop用户提供的公钥/私钥对,并用不同的用户共享。
下面的命令用于生成使用SSH键值对。复制公钥形成 id_rsa.pub 到authorized_keys 文件中,并提供拥有者具有authorized_keys文件的读写权限。
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
安装Java
Java是Hadoop的主要先决条件。首先,应该使用命令“java-version”验证 java 存在在系统中。 Java version 命令的语法如下。
$ java -version
如果一切顺利,它会给下面的输出。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
如果Java还未安装在系统中,那么按照下面的给出的步骤来安装Java。
第1步
下载Java(JDK<最新版> - X64.tar.gz)
然后JDK-7u71-linux-x64.tar.gz将被下载到系统。
第2步
一般来说,在下载文件夹中的Java文件。使用下面的命令提取 jdk-7u71-linux-x64.gz文件。
$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz
第3步
为了使Java提供给所有用户,将它移动到目录 “/usr/local/”。打开根目录,键入以下命令。
$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit
第4步
用于设置PATH和JAVA_HOME变量,添加以下命令到~/.bashrc文件。
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin
现在从终端验证 java -version 命令如上述说明。
下载Hadoop
下载来自Apache基金会软件,使用下面的命令提取 Hadoop2.4.1。
$ su
password:
# cd /usr/local
# wget http //apache claz org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit
Hadoop操作模式
下载 Hadoop 以后,可以操作Hadoop集群以以下三个支持模式之一:
本地/独立模式:下载Hadoop在系统中,默认情况下之后,它会被配置在一个独立的模式,用于运行Java程序。
模拟分布式模式:这是在单台机器的分布式模拟。Hadoop守护每个进程,如 hdfs, yarn, MapRece 等,都将作为一个独立的java程序运行。这种模式对开发非常有用。
完全分布式模式:这种模式是完全分布式的最小两台或多台计算机的集群。我们使用这种模式在未来的章节中。
在单机模式下安装Hadoop
在这里,将讨论 Hadoop2.4.1在独立模式下安装。
有单个JVM运行任何守护进程一切都运行。独立模式适合于开发期间运行MapRece程序,因为它很容易进行测试和调试。
设置Hadoop
可以通过附加下面的命令到 ~/.bashrc 文件中设置 Hadoop 环境变量。
export HADOOP_HOME=/usr/local/hadoop
在进一步讨论之前,需要确保Hadoop工作正常。发出以下命令:
$ hadoop version
如果设置的一切正常,那么应该看到以下结果:
Hadoop 2.4.1
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum
这意味着Hadoop在独立模式下工作正常。默认情况下,Hadoop被配置为在非分布式模式的单个机器上运行。
F. 怎么搭建两个hadoop集群的测试环境
环境配置:
虚拟机:
vmware workstation 12
系统:
ubuntu 16.04 LTS(推荐使用原版,不要用kylin)
节点: 192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
jdk-8u101-Linux-x64.gz (Java)hadoop-2.7.3.tar.gz (Hadoop 包)
安装步骤:
1、安装虚拟机系统,并进行准备工作(可安装一个然后克隆)
2.修改各个虚拟机的hostname和host
3.创建用户组和用户
4、配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以通过相互ping通。
5.安装jdk和配置环境变量,检查是否配置成功
6、配置ssh,实现节点间的无密码登录 ssh node1/2指令验证时候成功
7、master配置hadoop,并将hadoop文件传输到node节点
8、配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功。
1.安装虚拟机
在VM上安装下载好的Ubuntu的系统,具体过程自行网络。可以安装完一个以后克隆,但是本人安装过程中遇到很多问题,经常需要删除虚拟机,重新安装,而被克隆的虚拟机不能删除,所以本人就用了很长时候,一个一个安装。
一共3台虚拟机:分配情况和IP地址如下:
(注:查看ip地址的指令 ifconfig)
安装虚拟机时可以设置静态IP,因为过程中常常遇到网络连接问题,ifconfig找不到IPV4地址。当然,也可以不设,默认分配。
192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
2.修改虚拟机的hostname和hosts文件
以master上机器为例,打开终端,执行如下的操作,把hostname修改成master,hosts修改成如下所示的样子:
#修改hostname的指令:sudo gedit /etc/hostname
#修改hosts指令:sudo gedit /etc/hosts
#将以下内容添加到hosts中192.168.159.132 master192.168.159.134 node1192.168.159.137 node2
如下图所示:
自此,hadoop集群搭建成功!
G. 求教如何用shell获取hadoop命令的执行返回值
调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child(假设你配置文件中的默认值是namenode:namenodeport)。大多数FS Shell命令的行为和对应的Unix Shell命令类似,不同之处会在下面介绍各命令使用详情时指出。出错信息会输出到stderr,其他信息输出到stdout。
cat
使用方法:hadoop fs -cat URI [URI …]
将路径指定文件的内容输出到stdout。
示例:
hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
hadoop fs -cat file:///file3 /user/hadoop/file4
返回值:
成功返回0,失败返回-1。
chgrp
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] Change group association of files. With -R, make the change recursively through the directory structure. The user must be the owner of files, or else a super-user. Additional information is in the Permissions User Guide. -->
改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。
chmod
使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。
chown
使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。更多的信息请参见HDFS权限用户指南。
FromLocal
使用方法:hadoop fs -FromLocal <localsrc> URI
除了限定源路径是一个本地文件外,和put命令相似。
ToLocal
使用方法:hadoop fs -ToLocal [-ignorecrc] [-crc] URI <localdst>
除了限定目标路径是一个本地文件外,和get命令类似。
cp
使用方法:hadoop fs -cp URI [URI …] <dest>
将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。
示例:
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
返回值:
成功返回0,失败返回-1。
使用方法:hadoop fs - URI [URI …]
显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小。
示例:
hadoop fs - /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1
返回值:
成功返回0,失败返回-1。
s
使用方法:hadoop fs -s <args>
显示文件的大小。
expunge
使用方法:hadoop fs -expunge
清空回收站。请参考HDFS设计文档以获取更多关于回收站特性的信息。
get
使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。
示例:
hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://host:port/user/hadoop/file localfile
返回值:
成功返回0,失败返回-1。
getmerge
使用方法:hadoop fs -getmerge <src> <localdst> [addnl]
接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。addnl是可选的,用于指定在每个文件结尾添加一个换行符。
ls
使用方法:hadoop fs -ls <args>
如果是文件,则按照如下格式返回文件信息:
文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID
如果是目录,则返回它直接子文件的一个列表,就像在Unix中一样。目录返回列表的信息如下:
目录名 <dir> 修改日期 修改时间 权限 用户ID 组ID
示例:
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile
返回值:
成功返回0,失败返回-1。
lsr
使用方法:hadoop fs -lsr <args>
ls命令的递归版本。类似于Unix中的ls -R。
mkdir
使用方法:hadoop fs -mkdir <paths>
接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。
示例:
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir
返回值:
成功返回0,失败返回-1。
movefromLocal
使用方法:dfs -moveFromLocal <src> <dst>
输出一个”not implemented“信息。
mv
使用方法:hadoop fs -mv URI [URI …] <dest>
将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。
示例:
hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1
返回值:
成功返回0,失败返回-1。
put
使用方法:hadoop fs -put <localsrc> ... <dst>
从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。
hadoop fs -put localfile /user/hadoop/hadoopfile
hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile
hadoop fs -put - hdfs://host:port/hadoop/hadoopfile
从标准输入中读取输入。
返回值:
成功返回0,失败返回-1。
rm
使用方法:hadoop fs -rm URI [URI …]
删除指定的文件。只删除非空目录和文件。请参考rmr命令了解递归删除。
示例:
hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir
返回值:
成功返回0,失败返回-1。
rmr
使用方法:hadoop fs -rmr URI [URI …]
delete的递归版本。
示例:
hadoop fs -rmr /user/hadoop/dir
hadoop fs -rmr hdfs://host:port/user/hadoop/dir
返回值:
成功返回0,失败返回-1。
setrep
使用方法:hadoop fs -setrep [-R] <path>
改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。
示例:
hadoop fs -setrep -w 3 -R /user/hadoop/dir1
返回值:
成功返回0,失败返回-1。
stat
使用方法:hadoop fs -stat URI [URI …]
返回指定路径的统计信息。
示例:
hadoop fs -stat path
返回值:
成功返回0,失败返回-1。
tail
使用方法:hadoop fs -tail [-f] URI
将文件尾部1K字节的内容输出到stdout。支持-f选项,行为和Unix中一致。
示例:
hadoop fs -tail pathname
返回值:
成功返回0,失败返回-1。
test
使用方法:hadoop fs -test -[ezd] URI
选项:
-e 检查文件是否存在。如果存在则返回0。
-z 检查文件是否是0字节。如果是则返回0。
-d 如果路径是个目录,则返回1,否则返回0。
示例:hadoop fs -test -e filename
text
使用方法:hadoop fs -text <src>
将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。
touchz
使用方法:hadoop fs -touchz URI [URI …]
创建一个0字节的空文件。
示例:
hadoop -touchz pathname
返回值:
成功返回0,失败返回-1。
大家看我的问题,我比较2个文件夹,我发现执行了第2句话程序就结束了!!!没有答应echo different.
请问,我如何才能够获取到diff -r cwjdir1 cwjdir2的返回值呢??难道这个diff命令在他内部就直接死掉了??
求高手解答。 1.能获取到这个命令的返回值吗 ? 2.为什么打印不出echo different
#!/bin/bash -e
diff -r cwjdir1 cwjdir2
if [ $? -ne 0 ] ; th郸郸策肝匕菲察十畅姜en
echo different
exit 1
fi
echo files cmped
H. hadoop中常用的命令
1、查看指定目录下内容
hadoop dfs –ls [文件目录]
eg: hadoop dfs –ls /user/wangkai.pt
2、打开某个已存在文件
hadoop dfs –cat [file_path]
eg:hadoop dfs -cat /user/wangkai.pt/data.txt
3、将本地文件存储至hadoop
hadoop fs –put [本地地址] [hadoop目录]
hadoop fs –put /home/t/file.txt /user/t
(file.txt是文件名)
4、将本地文件夹存储至hadoop
hadoop fs –put [本地目录] [hadoop目录]
hadoop fs –put /home/t/dir_name /user/t
(dir_name是文件夹名)
5、将hadoop上某个文件down至本地已有目录下
hadoop fs -get [文件目录] [本地目录]
hadoop fs –get /user/t/ok.txt /home/t
6、删除hadoop上指定文件
hadoop fs –rm [文件地址]
hadoop fs –rm /user/t/ok.txt
7、删除hadoop上指定文件夹(包含子目录等)
hadoop fs –rm [目录地址]
hadoop fs –rmr /user/t
8、在hadoop指定目录内创建新目录
hadoop fs –mkdir /user/t
9、在hadoop指定目录下新建一个空文件
使用touchz命令:
hadoop fs -touchz /user/new.txt
10、将hadoop上某个文件重命名
使用mv命令:
hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)
11、将hadoop指定目录下所有内容保存为一个文件,同时down至本地
hadoop dfs –getmerge /user /home/t
12、将正在运行的hadoop作业kill掉
hadoop job –kill [job-id]
I. 命令mv ./hadoop-2.7.7/ ./hadoop 的功能是什么
移动了hadoop-2.7.7这个文件夹,并且把他名字改成了hadoop
例如你在windows里面进入了c盘,c盘下有个hadoop-2.7.7的文件夹,你想把他改名成hadoop。上面这个操作就是这个意思。
J. Linux命令sudo mv ./hadoop-2.6.0/ ./hadoop 中 ./是啥意思呢直接sudo mv hadoop-2.6.0/ hadoop 不行吗
可以,路径有相对路径和绝对路径,上面的两个路径都是相对路径。
“.”表示当前目录,用作参数的时候,用与不用一样。只是在运行程序的时候,如果不加“.”,而环境变量中又没有设置,会找不到命令。