hadoop常用设置及用法
来源:互联网 发布:星际殖民2 数据 编辑:程序博客网 时间:2024/06/02 03:22
一、Hadoop配置文件修改
(如果要设置集群,必须先设置主机名和hosts,否则DataNode不能和namenode相连接)
1、hadoop-env.sh
修改JAVA_HOME的值
2、core-site.xml
3、hdfs-site.xml
4、mapred-site.xml(将mapred-site.xml.template重命名)
5、yarn-site.xml
二、启动hadoop
1、hadoop/bin运行 ./hdfs -namenode –format
2、hadoop/bin运行 jps 查看java进程
3、hadoop/sbin运行start-dfs.sh
4、hadoop/sbin运行start-yarn.sh
5、hadoop/bin运行 jps 查看java进程
三、使用hadoop
1、hdfs文件系统
路径/hdfsdfs -ls(等文件操作命令) +路径
或者在ip:50070的文件目录查看
四、mapper编程
注: 1、可以手动指定reduce的个数,job.setNumReduceTasks(intnum);
2、防止jar包存放位置写死,可以使用job.setJarByClass(this.class)
3、如果需要在map阶段计算一些小型的计算,可以指定一个combiner,用法与reducer相同,工作在两者之间,并用job.setCombinerClass(MyCom.class)指定类。
五、启动yarn
hadoop jar pv.jar
六、使用技巧
1、当一次不能得到结果时,可以采用两次或者多次的方法。
2、如有需要,可使用key-文件名结合的方式输出map
生成文件名的方法:
3、map和reduce的启动过程是:先实例化map和reduce类,再一行行的执行数据。
在实例化第一次会执行setup一次,且只有一次,在执行map和reduce之前。
在实例化第一次会执行clearup一次,且只有一次,在执行map和reduce之后。
4、如果map和reduce之间的分配方式不能满足,则可以重写partitioner类,再使用
job.setPartitionerClass(MyPartitioner.class)的方法指定。
5、如果要使用自定义的JavaBean,要重写空参数构造方法和toString方法。
6、如果map和reduce的泛型参数要使用自定义的JavaBean,则JavaBean要实现Writeable接口,也要实现两个方法,如下(注意顺序,String类型写writeUTF(String)):
7、如果要比较JavaBean某一个参数的大小,必须让JavaBean实现compareable接口
并实现其方法,用javaBean.property.compare(other.property)
8、如果configuration.set(“属性”,”值”),可以用context.getConfiguration获得configuration,再configuration.getInt(“属性”)的方法获取
cd /usr/hadoop-2.8.2/tmp/dfs/
9、如果要改变排序规则,建造以下类并在mian中指定job.setGroupComparatorClass():
10、如果想输出到不同的文件中,则需要自定义FileOutputFormat,并在job.setOutputFormat()中指定,如下:
还可以使用multipleOutput工具类(注意一定要关闭multipleOutput):
比如如上还可以用以下实现:
public class MyReducerextendsReducer<MyTestBean,NullWritable,Text,Text> {
MultipleOutputsmos;
@Override
protectedvoid setup(Contextcontext)throws IOException,InterruptedException{
mos=newMultipleOutputs(context);
}
@Override
protectedvoid reduce(MyTestBeankey,Iterable<NullWritable>values,Context context)throwsIOException,InterruptedException{
int count=0;
for (NullWritablenullWritable:values){
count++;
if (count>1)return;
String name=key.getName();
String num=key.getNum();
//context.write(new Text(name),new Text(num));
mos.write((Object)name,NullWritable.get(),"/out1");
mos.write((Object)num,NullWritable.get(),"/out2");
}
}
@Override
protectedvoid cleanup(Contextcontext)throws IOException,InterruptedException{
mos.close();
}
}
如果不想输出空文件,则需要在main中添加:
LazyOutputFormat.setOutputFormatClass(job,TextOutputFormat.class);
七、常用的实现方法
1、join连接
在main中,加入job.setCacheFiles(),并指定reduce数量为0,再在setup方法中逐行读取数据(用bufferdreader),放入到HashMap中,最后在map阶段连接。
2、topN输出
构建JavaBean的key,用GroupComparator构建比较规则(必须在Javabean中实现writablecomparable接口),让他id相同的(不管评分大小)为一个相同的key,再分发到reduce,最后输出。
八、安全模式
相关的操作命令
Hadoop提供脚本用于对安全模式进行操作,主要命令为:
- 1
command的可用取值如下:
- hadoop常用设置及用法
- hadoop 常用环境变量及使用
- hadoop配置文件及常用配置
- DLL: 设置及用法
- 常用快捷方式及设置
- 常用设置及安装
- pycharm常用设置和用法
- 常用linux命令及用法
- 常用集合用法及区别
- ansible常用模块及用法
- Hadoop的JobControl设计及用法
- hadoop java接口及常用api
- hadoop常用端口及定义方法
- Hadoop/HBase常用操作及命令
- VS常用设置及操作
- vim常用快捷键及设置
- VS常用设置及操作
- eclipse常用设置及快捷键
- 搭建MySQL高可用负载均衡集群
- Makefile额外之特殊目标
- 【poj 2352】 Stars 【Ural Collegiate Programming Contest 1999】
- Win10环境下Python入门(一)Python及IDE安装
- C语言之控制台读取上下左右方向键指令
- hadoop常用设置及用法
- SVN使用svn:ignore忽略Eclipse的项目工程文件
- 使用单链表统计英文文本单词个数
- VS2015配置opencv3.2.0
- 解决org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryVal
- Ubuntu下安装TeamViewer[命令行方式]
- Lintcode 74 First Bad Version solution 题解
- 【修改】wordpress 文章末尾加上相关文章--亲测可用
- Python3 网络爬虫入门知识碎片