centos6.5hadoop2.7部署和简单例子
2016-11-22 15:20
246 查看
centos6.5hadoop2.7部署和简单例子
本文所使用的资源文件清单如下:CentOS-6.5-x86_64-bin-DVD.iso
hadoop-2.7.3
jdk-8u11-linux-x64.tar.gz
此处加一段废话:为了不出现任何诡异错误,安装完虚拟机后什么都不要干!
java及hadoop环境变量配置
将jdk和hadoop复制放家目录解压jdk和hadoop
tar -zxvf jdk-8u11-linux-x64.tar.gz tar -zxvf hadoop-2.7.3
通常软件安装到/usr目录下,我们创建/usr/soft这个目录
mkdir /usr/soft
将jdk和hadoop和移动到/usr/soft目录下
mv jdk1.8 /usr/soft mv hadoop-2.7.3 /usr/soft
打开/etc/profile
vim /etc/profile
在文件最后添加如下几句
export JAVA_HOME=/usr/soft/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_INSTALL=/usr/soft/hadoop-2.7.3 export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin
上面的三行是设置java环境变量,下面两行是设置hadoop环境变量。
使配置生效
source /etc/profile
输入java -version 看看java环境变量有没有设置成功
java -version
输入hadoop version看看hadoop环境变量有没有设置成功
hadoop version
hadoop伪分布模式配置
进入hadoop配置文件目录进行配置cd /usr/soft/hadoop-2.7.3/etc/hadoop
打开core-site.xml 在内添加如下内容
<property> <name>fs.defaultFS</name> <value>hdfs://localhost/</value> </property>
打开hdfs-site.xml 在内添加如下内容
<property> <name>dfs.replication</name> <value>1</value> </property>
将mapred-site.xml.template改成mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
打开mapred-site.xml 在内添加如下内容
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
打开yarn-site.xml在内添加如下内容
<property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
设置ssh无密码登陆
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cd .ssh cat id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost
exit
ssh localhost
这里还有一个坑,打开/usr/soft/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
vim /usr/soft/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
找到
export JAVA_HOME={$JAVA_HOME}
这个应该在最上头
改成
export JAVA_HOME=/usr/soft/jdk1.8
格式化文件系统
hadoop namenode -format
启动守护程序
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
这是结束命令,依次执行
stop-dfs.sh stop-yarn.sh mr-jobhistory-daemon.sh stop historyserver
通过web查看hadoop
http://localhost:50070/ http://localhost:8088/ http://localhost:19888/
hadoop命令与linux命令基本一样.
hadoop fs -mkdir -p /home/taizhimin hadoop fs -ls /
hadoop简单例子
在hadoop目录里添加测试用例
类似这种格式,这仅仅使一行,自行创建文件吧。这个文件是1901和1902年的天气数据,网上应该能找到。
0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
hadoop fs -put 1901 /home/hadoop/input/
如果没有这个目录自行创建吧
创建java工程,创建lib目录将hadoop2.7目录下的所有jar包添加 ,build path等等等。。。。。。。然后三个类
import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; /** * Mapper类 * * @author taizhimin * */ public class MaxTemperatureMapper extends org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, Text, IntWritable> { private static final int MISSING = 9999; // Map方法 protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String year = line.substring(15, 19); int airTemperature; if (line.charAt(87) == '+') { airTemperature = Integer.parseInt(line.substring(88, 92)); } else { airTemperature = Integer.parseInt(line.substring(87, 92)); } String quality = line.substring(92, 93); if (airTemperature != MISSING && quality.matches("[01459]")) { context.write(new Text(year), new IntWritable(airTemperature)); } } }
import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; /** * Reduce类 * @author taizhimin * */ public class MaxTemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> { protected void reduce(Text keyin, Iterable<IntWritable> valuein, Context context) throws IOException, InterruptedException { //定义最大值变量 int maxValue = Integer.MIN_VALUE; for (IntWritable value : valuein) { maxValue = Math.max(maxValue, value.get()); } //将reduce的输出写入到上下文 context.write(keyin, new IntWritable(maxValue)); } }
import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; /** * 作业类 * @author taizhimin * */ public class MaxTemperature { public static void main(String[] args) throws Exception { // 作业 Job job = new Job(); job.setJarByClass(MaxTemperature.class); job.setJobName("max temperature"); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setMapperClass(MaxTemperatureMapper.class); job.setReducerClass(MaxTemperatureReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); System.out.println(job.waitForCompletion(true)); } }
导出为jar包,简单导出就行,不需要其他的如.profile,lib目录下的等统统不要。
复制到linux
export HADOOP_CLASSPATH=hadoopdemo.jar
切记不可以有/home/hadoop/out目录如果要导出本地文件目录前面加file:///就可以,切记不可以有此目录,不然报错。
hadoop com.rt.MaxTemperature /home/hadoop/input/* /home/hadoop/out
待执行完成
hadoop fs -cat /home/hadoop/out/part-r-00000
结束
相关文章推荐
- centOS6.5安装hadoop2.7后,再安装hbase1.1.0.1,完全分布式部署
- centOS6.5安装hadoop2.7的分布式部署(三台主机)
- 简明的hadoop 2.5 HA 基于centos6.5 安装部署文档(hdfs,mapreduce,hbase)
- CentOS 7.3 Python2.7 下ansible的安装、配置及简单的例子
- Hadoop2.2.0在CentOS6.5上的集群搭建简单教程
- CentOS6.5搭建Hadoop2.7集群环境前要注意的问题
- centos6.5平台下Hadoop集群部署
- [简单部署cloudstack]Centos6.5安装Cloudstack 4.3-管理节点和计算节点安装
- [简单部署cloudstack]Centos6.5安装Cloudstack 4.3之升级虚拟机配置
- centos6.5之Hadoop1.2.1完全分布式部署安装
- [简单部署cloudstack]Centos6.5安装Cloudstack 4.3之在线迁移虚拟机
- CentOS6.5环境部署Hadoop2.8.1集群(HA)
- [简单部署cloudstack]Centos6.5安装Cloudstack 4.3之配置详解
- CentOS6.5编译部署64位Hadoop2.2.0
- CentOS 6 安装Hadoop 2.6 (四)运行简单例子
- CentOS6.5安装Hadoop2.7完整流程
- centos6.5配置Hadoop环境,运行wordcount例子
- 【centos6.5 hadoop2.7 _64位一键安装脚本】有问题加我Q直接问
- [置顶] 编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行