您的位置:首页 > 运维架构 > Shell

熟练掌握HDFS的Shell访问

2016-01-06 23:21 806 查看

1单个HDFS集群的Shell访问操作

 我们使用Xshell,先开机启动Hadoo集群,查看下是否完全开启。

 sbin/start-all.sh

 ips



用shell来操作HDFS,格式总的来说是,hadoop fs ******

1、先总的来查看,可以看出,跟Linux的命令使用差不多。

hadoop fs -help





2、查看下根目录

HDFS 上的文件目录结构类似 Linux,根目录使用 "/" 表示。

hadoop fs -ls /

由此可以看出,则包括/dajiangtai ,/anagram,/tmp,/salary,/weather。

即,这些总的目录就是前面一路所学下来的。



3、查看下/dajiangtai目录。

hadoop fs -ls /dajiangtai



4、创建文件夹,在/dajiangtai下创建子目录tmp

hadoop fs -mkdir /dajiangtai/tmp

hadoop fs -ls /dajiangtai



5 、将本地下载好的weibo.txt(前提要是UTF-8格式)通过rz命令上传进来。

ls

rz

ls









6 、我们需将weibo.txt上传至/dajiangtai/tmp下。

hadoop fs -put weibo.txt /dajiangtai/tmp 将weibo.txt上传至/dajiangtai/tmp下

hadoop fs -ls /dajiangtai/tmp/ 查看/dajiangtai/tmp



即,成功。

注意:还可以使用 -copyFromLocal 参数。

hadoop fs -copyFromLocal weibo.txt /dajiangtai/tmp

hadoop fs -ls /dajiangtai/tmp/

7 、查看weibo.txt里的内容。

hadoop fs -text /dajiangtai/tmp/weibo.txt

还可以用 -cat、-tail 参数查看文件的内容。但是对于压缩的结果文件只能用 -text 参数来查看,否则是乱码。如下是没有经过压缩的直接上传的weibo.txt。

在这里,若是hadoop fs –cat /dajiangtai/tmp/weibo.txt,也是出现如下情况。则说明是格式转码的问题。



详细见 文档格式转换为UTF-8的博客。

hadoop fs –cat /dajiangtai/tmp/weibo.txt



hadoop fs -text /dajiangtai/tmp/weibo.txt



hadoop fs -cat /dajiangtai/tmp/weibo.txt



8 、把 weibo.txt 文件复制到本地。如复制到localdata文件夹里。

ls

mkdir localdata

cd localdata/

ls



9、为此,将weibo.txt复制到当前目录。即/usr/java/hadoop/localdata/

hadoop fs –get /dajiangtai/tmp/weibo.txt . 注意,这点也可以省略。



或者

hadoop fs -copyToLocal /dajiangtai/tmp/weibo.txt

ls



10、将weibo.txt复制到另一个目录下,即,创建/dajiangtai/test

hadoop fs -ls /dajiangtai

hadoop fs -mkdir /dajiangtai/test

hadoop fs ls /dajiangtai



则,创建成功!

11、将/dajiangtai/tmp/下的weibo.txt,复制到/dajiangtai/test下。

hadoop fs -cp /dajiangtai/tmp/weibo.txt /dajiangtai/test

hadoop fs -ls /dajiangtai/test



12、删除/dajiangtai/tmp/下的weibo.txt文件

hadoop fs -rm /dajiangtai/tmp/weibo.txt 删除文件是 -rm

hadoop fs -ls /dajiangtai/tmp



13、删除/dajiangtai/下的tmp目录

hadopp fs -rm -r /dajiangtai/tmp 注意空格,-rm -r 删除文件是 -rm -r

hadoop fs -ls /dajiangtai



至此,单个HDFS集群的操作,就这么多。

2 多个HDFS集群的Shell访问操作

需要再新建一个。此刻,同样,先安装,再搭建网络,再搭建Hadoop伪分布集群,为dajiangtai1。

IP地址地址是192.18.80.129。即前面的那个是dajiangtai。192.168.80.128

详细,见安装dajiangtai1。

在这里,我遇到了一个问题,当我再次安装一个Linux系统时,竟然查看得到的IP地址依然是192.168.80.128。我反复试了好几遍,最后无奈之下,只能用手动自主来分配其IP地址,那么,困惑就由此产生了,这是为什么会导致这样的原因出现的呢??????

上面是单线程访问的 HDFS 访问模型,但是多个Hadoop 集群需要复制数据该怎么办呢?幸运的是,Hadoop 有一个有用的distcp分布式复制程序,该程序是MapReduce作业来实现的,它是通过集群中并行运行的map来完成集群之间大量数据的复制。 下面我们将介绍 distcp 在不同场景下该如何使用。

现在,打开另一个hadoop集群。如下

192.168.80.128的djt002

192.168.80.129的djt001

ls



sbin/start-all.sh



ls

sbin/start-all.sh



1、 查看下djt001的hadoop集群的文件目录

hadoop fs -ls /



hadoop fs -ls /



2、 创建djt001的hadoop集群的data目录

hadoop fs -mkidr /data 创建HDFS根目录下的data目录

hadoop fs -ls / 查看



3、 现在将djt002集群下的/dajiangtai/test/weibo.txt复制到djt001集群下的/data下,在djt001集群下输入

hadoop distcp hdfs://djt002:9000/dajiangtai/test/weibo.txt /data

第一个路径必须是绝对路径,hdfs://djt002:9000/dajiangtai/test/weibo.txt

第二个路径是相对路径,/data







由上可知,这一过程是由mapreduce作业完成的。

4、 在djt001集群下查看复制后的结果,并打开查看weibo.txt的内容

hadoop fs -ls /data

hadoop fs -text /data/weibo.txt



可以得出,跟djt002集群的源文件/dajiangtai/test/weibo.txt的一致,即说明djt002集群和djt001集群成功。

5、 如何在djt002集群下的weibo.txt追加新的内容?

hadoop fs -appendToFile - hdfs://djt002:9000/dajiangtai/test/weibo.txt



疑问:这里,步骤是一样的,但是视频里没有我这样的错误,内容是可以追加进去,目的是达到了,但是中间有报错误。

随便输入些什么,这里,我故意输入好几次的dajiangtai,其中,因为手误,但不能返回删除,故出现上图的^H,^C这样的符号。。



1、 那么,当在djt002集群下对weibo.txt追加了新的内容进去,那么如何在远程对djt001实行更新weibo.txt呢??

hadoop distcp -update hdfs://djt002:9000/dajiangtai/weibo.txt /data/weibo.txt

或者,

hadoop distcp overwrite hdfs://djt002:9000/dajiangtai/weibo.txt /data/weibo.txt









3 最后,作为管理员还需要掌握以下命令:

1、 查看正在运行的Job。

hadoop job -list





由上可见,此刻是没有正在运行的Job。

2、 关闭正在运行的Job。

hadoop job -kill Job号

如 hadoop job -kill job_1432108212572_0001

3、 检查HDFS块状态,查看是否损坏。

hadoop fsck / 这里的/是HDFS的根目录,类似于Linux的根目录





4、 检查HDFS快状态,并删除损坏的快。

hadoop fsck / -delete

5、 检查HDFS状态,包括DataNode信息

hadoop dfsadmin -report





6、 Hadoop进入安全模式

hadoop dfsadmin –safemode enter

7、 Hadoop进入安全模式

hadoop dfsadmin –safemode leave

8、 平衡集群中的文件

cd /usr/java/ha doop

sbin/start-balancer.sh

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: