Hadoop课程遇到的问题集锦

来源:互联网 发布:淘宝最晚多久确认收货 编辑:程序博客网 时间:2024/06/18 14:58

这学期上的Hadoop课程都快要结束,但是一学期下来遇到的很多问题还没有整理,总结,零零碎碎记录在本子上,今天来个集锦,第一次记录,尽量写得明白些哈哈。

一、安装
在学Hadoop之前没有学过Linux,所以安装的时候对于一些命令并不是很熟悉,所以安装起来有点困难,记录一下常用命令:
(1)编辑
有两种,一种是gedit +路径,一种是vi+路径,不太清楚两者区别,但是有一部分文件gedit并不可用,后者的话操作如下:
进去之后,按i编辑,esc退出编辑,:wq保存并退出
(2)权限
进入root——su root
(3)其他
-mkdir 创建新文件夹
tar -xvf 解压压缩包
rm -rf 删除
-c 建立压缩档案
-t 查看内容
-r 向压缩归档文件末位追加文件
-u 更新原来压缩包中文件
(4)启动
启动Hadoop:进入Hadoop文件夹sbin/start-all.sh
启动HBase:进入HBase文件夹bin/start-hbase.sh
进入HBase shell:hbase shell
进入HIVE:进入HIVE文件夹bin/hive
(5)某些时候需要关闭安全模式:
Hadoop dfsadmin -safemode leave
(6)安装MySQL删不了CentOS自带安装包
rpm -ev mysql -libs-5.1.71-3.el6-5.x86-64 --nodeps

二、编程
(1)出错
1、ERROR while running command to get file permissions
这是由于Windows的FileInputFormat.setInputPaths不能写路径,要改成具体的文件路径
2、Name node is in safe mode
需要关闭安全模式bin/hadoop dfsadmin -safemode leave

(2)MR编程实现多路径输入

1、多次调用,加载不同路径

String in01 = "hdfs://master://9000/cs01/path01";String in02 = "hdfs://master://9000/cs01/path02";FileInputFormat.addInputPath(job,new Path(in01));FileInputFormat.addInputPath(job,new Path(in02));

2、一次调用,同时加载多路径(字符串用逗号隔开)
(这种方式的第二个参数只能是:将路径以逗号拼接的字符串)

FileInputFormat.addInputPaths(job,"hdfs://master://9000/cs01/path01,hdfs://master://9000/cs01/path02";

3、使用MultipleInputs类的方法

(3)利用代码删除output
在main中的FileInputFormat.setInputPaths后加上这段:

Path output = new Path(args[1]);FileSystem fs = FileSystem.get(conf);if(fs.exists(output)){    fs.delete(output,true);}//FileOutputFormat.setOutputPath(job,output);
原创粉丝点击