微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hadoop 单机环境安装配置和实现单词计数功能

一、大数据简介及发展前景

二、Hadoop 简介、生态圈简介及核心介绍

三、 VMwareo 环境安装与 CentOS 安装

四、Hadoop 单机环境安装配置和实现单词计数功能

一、大数据简介及发展前景

1、大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产

2、大数据特点:

Volume(大量):数据体量巨大

VeLocity(高速):处理速度快

Variety(多样):数据类型繁多

Value(低价值密度):价值密度低、商业价值高

3、大数据应用领域:

  1. 金融领域
  2. 安防领域
  3. 能源领域
  4. 业务领域
  5. 医疗领域
  6. 电力行业领域

二、Hadoop 简介、生态圈简介及核心介绍

1.Hadoop 简介

Hadoop 实现了一个分布式文件系统(Hadoop distributed File System),简称 HDFS

特点:高可靠性

高扩展性

高效性

高容错性

低成本

2.Hadoop 生态圈介绍

Hive:能够支持数据的汇总和临时查询的数据仓库基础框架

Flume:一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统

HBase:能支持结构化数据大表存储的可扩展的、分布式的数据库

Mahout:一个可扩展的机器学习和数据挖掘库

Pig:它是一个工具 / 平台,用于分析较大的数据集,并将它们表示为数据流

ZooKeeper:一种分布式可用性高的协调服务

Spark:一个快速通用的数据引擎

Oozie:一个工作流引擎服务器,用于运行 Hadoop Map/Reduce 和 Hive 等任务工作流

3.Hadoop 核心介绍

1、Hadoop 是 Apache 软件基金会所开发的并行计算框架与分布式文件系统

2、Hadoop 各个核心项目架构:

1)HDFS2 架构:HDFS 的作用是负责对数据的分布式存储

2)YARN 架构:YARN 架构是一个资源调度和管理的平台

3)MapReduce 架构:MapReduce 架构依赖于磁盘 I/O 的批处理计算模型

三、 VMwareo 环境安装与 CentOS 安装

1、java环境安装

a、rpm -qa|grep jdk 查看安装的jdk

b、yum -y remove java-1.* 卸载已安装的 jdk。直到提示出现“Complete”,则卸载完成

c、mkdir /opt/soft

d、mkdir /opt/data  创建目录

e、ls /opt  查看目录是否创建成功

f、cd /opt

tar -zxvf soft/jdk-8u112-linux- x64.tar.gz

mv jdk1.8.0_112/ jdk

(1)上传 jdk 压缩文件到 soft 目录

(2)解压 jdk 压缩文件到 opt 目录,并将 jdk1.8.0_112 目录变为 jdk

g、vi /etc/profile.d/hadoop-eco.sh

在 hadoop-eco.sh 中添加相关内容后,保存并退出

h、JAVA_HOME=/opt/jdk

PATH=$JAVA_HOME/bin:$PATH

i、source /etc/profile.d/hadoop-eco.sh

j、java -version

四、Hadoop 单机环境安装配置和实现单词计数功能

搭建步骤:

1、上传Hadoop压缩文件到soft目录

2、解压压缩文件

3、配置环境变量

4、创建工作目录

hadoop-record/name

hadoop-record/secondary

hadoop-record/data

hadoop-record/temp

5、Hadoop配置文件

hadoop-env.sh

yarn-env.sh

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

(1)hadoop-env.sh 的配置:修改 JAVA_HOME 的地址为 exprot JAVA_HOME=/opt/jdk

(2)yarn-env.sh 的配置:修改 JAVA_HOME 的地址为 exprot JAVA_HOME=/opt/jdk

(3)core-site.xml 的配置:

<configuration>

  <!--NameNode 结点的 URI-->

  <property>

  <name>fs.defaultFS</name>

  <value>hdfs://localhost:9000</value>

  </property>

  <!-- 指定 Hadoop 运行时产生文件的存储路径 -->

  <property>

  <name>hadoop.tmp.dir</name>

  <value>file:///opt/hadoop-record/tmp</value>

  </property>

</configuration>

(4)hdfs-site.xml

<configuration>

  <property>

  <!-- 数据副本数量 -->

  <name>dfs.replication</name>

  <value>1</value>

  </property>

  <property>

  <!-- namenode 数据存放地址 -->

  <name>dfs.namenode.name.dir</name>

  <value>file:///opt/hadoop-record/name</value>

  </property>

  <property>

  <!-- datanode 数据存放地址 -->

  <name>dfs.datanode.data.dir</name>

  <value>file:///opt/hadoop-record/data</value>

  </property>

</configuration>

(5)mapred-site.xml

<configuration>

  <property>

  <!--mapreduce 运行的平台,认 Local-->

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

  </property>

</configuration>

(6)yarn-site.xml

<configuration>

  <property>

  <!--resourcemanager 所在的机器 -->

  <name>yarn.resourcemanager.hostname</name>

  <value>localhost</value>

  </property>

  <property>

  <!-- 所需要的服务 -->

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

  </property>

</configuration>

6、查看Hadoop版本

hadoop version

7、启动Hadoop

hdfs namenode -format //对name节点格式化

启动:

start-dfs.sh

 

单词技术功能实现

Mapper类的实现

package com.hadoop.wc;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class WCdMapper extends Mapper<LongWritable, Text,Text,LongWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String[] fields = value.toString().split("\t");
        for (String f:fields){
            context.write(new Text(f),new LongWritable(1));
        }
    }
}

 Reducer类的实现

package com.hadoop.wc;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class WCdReduce extends Reducer<Text, LongWritable,Text,LongWritable> {
    @Override
    protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
        long time=0;
        for (LongWritable value:values){
            time+=value.get();
        }
        context.write(new Text(key),new LongWritable(time));
    }
}

 Driver类的实现

package com.hadoop.wc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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;

import java.io.IOException;

public class WCdDriver {
    public static void main(String[] args) {
        Configuration conf = new Configuration();
        try {
            Job job = Job.getInstance(conf);
            job.setJarByClass(WCdDriver.class);
            job.setMapperClass(WCdMapper.class);
            job.setReducerClass(WCdReduce.class);
            job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(LongWritable.class);
            job.setoutputKeyClass(Text.class);
            job.setoutputValueClass(LongWritable.class);
            Path input = new Path("/data");
            Path output = new Path("/output");
            output.getFileSystem(conf).delete(output,true);
            FileInputFormat.setInputPaths(job,input);
            FileOutputFormat.setoutputPath(job,output);
            boolean result = job.waitForCompletion(true);
            System.exit(result?0:1);

        } catch (IOException e) {
            e.printstacktrace();
        } catch (InterruptedException e) {
            e.printstacktrace();
        } catch (ClassNotFoundException e) {
            e.printstacktrace();
        }

    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐