hadoop 能做什么,hadoop可以用来干嘛的

首页 > 数码 > 作者:YD1662024-06-27 02:41:48

文件读取:

1. Client向NameNode发起文件读取的请求

2. NameNode返回文件存储的DataNode的信息。

3. Client读取文件信息。

3.2 MapReduce

  MapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成,不需要编程人员关心这些内容。

  下图是一个MapReduce的处理过程:

hadoop 能做什么,hadoop可以用来干嘛的(9)

用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。

  如果这样解释还是太抽象,可以通过下面一个具体的处理过程来理解:(WordCount实例)

hadoop 能做什么,hadoop可以用来干嘛的(10)

Hadoop的核心是MapReduce,而MapReduce的核心又在于map和reduce函数。它们是交给用户实现的,这两个函数定义了任务本身。

· map函数:接受一个键值对(key-value pair)(例如上图中的Splitting结果),产生一组中间键值对(例如上图中Mapping后的结果)。Map/Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。

· reduce函数:接受一个键,以及相关的一组值(例如上图中Shuffling后的结果),将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)(例如上图中Reduce后的结果)

但是,Map/Reduce并不是万能的,适用于Map/Reduce计算有先提条件

注意:

待处理的数据集可以分解成许多小的数据集;

而且每一个小数据集都可以完全并行地进行处理;

若不满足以上两条中的任意一条,则不适合使用Map/Reduce模式;

五、 Hadoop的安装配置

Hadoop共有三种部署方式:本地模式,伪分布模式及集群模式;本次安装配置以伪分布模式为主,即在一台服务器上运行Hadoop(如果是分布式模式,则首先要配置Master主节点,其次配置Slave从节点)。以下说明如无特殊说明,默认使用root用户登录主节点,进行以下的一系列配置。

  安装配置前请先准备好以下软件:

·   vmware workstation 8.0或以上版本

·   redhat server 6.x版本或centos 6.x版本

·   jdk-6u24-linux-xxx.bin

·   hadoop-1.1.2.tar.gz

4.1 设置静态IP地址

  命令模式下可以执行setup命令进入设置界面配置静态IP地址;x-window界面下可以右击网络图标配置;

  配置完成后执行service network restart重新启动网络服务;  

  验证:执行命令ifconfig

4.2 修改主机名

  <1>修改当前会话中的主机名(这里我的主机名设为hadoop-master),执行命令hostname hadoop-master

  <2>修改配置文件中的主机名,执行命令vi /etc/sysconfig/network

  验证:重启系统reboot

4.3 DNS绑定

  执行命令vi /etc/hosts,增加一行内容,如下(这里我的Master节点IP设置的为192.168.80.100):

  192.168.80.100 hadoop-master

  保存后退出

  验证:ping hadoop-master

4.4 关闭防火墙及其自动运行

  <1>执行关闭防火墙命令:service iptables stop

验证:service iptables stauts

  <2>执行关闭防火墙自动运行命令:chkconfig iptables off

  验证:chkconfig --list | grep iptables

4.5 SSH(Secure Shell)的免密码登录

  <1>执行产生密钥命令:ssh-keygen –t rsa,位于用户目录下的.ssh文件中(.ssh为隐藏文件,可以通过ls –a查看)

  <2>执行产生命令:cp id_rsa.pub authorized_keys

  验证:ssh localhost

4.6 复制JDK和Hadoop-1.1.2.tar.gz至Linux中

  <1>使用WinScp或CuteFTP等工具将jdk和hadoop.tar.gz复制到Linux中(假设复制到了Downloads文件夹中);

  <2>执行命令:rm –rf /usr/local/* 删除该文件夹下所有文件

  <3>执行命令:cp /root/Downloads/* /usr/local/ 将其复制到/usr/local/文件夹中

4.7 安装JDK

  <1>在/usr/local下解压jdk安装文件:./jdk-6u24-linux-i586.bin(如果报权限不足的提示,请先为当前用户对此jdk增加执行权限:chmod u x jdk-6u24-linux-i586.bin)

  <2>重命名解压后的jdk文件夹:mv jdk1.6.0_24 jdk(此步凑非必要,只是建议)

  <3>配置Linux环境变量:vi /etc/profile,在其中增加几行:

  export JAVA_HOME=/usr/local/jdk

  export PATH=.:$JAVA_HOME/bin:$PATH

  <4>生效环境变量配置:source /etc/profile

  验证:java –version

4.8 安装Hadoop

  <1>在/usr/local下解压hadoop安装文件:tar –zvxf hadoop-1.1.2.tar.gz

  <2>解压后重命名hadoop-1.1.2文件夹:mv hadoop-1.1.2 hadoop(此步凑非必要,只是建议)

  <3>配置Hadoop相关环境变量:vi /etc/profile,在其中增加一行:

  export HADOOP_HOME=/usr/local/hadoop

然后修改一行:

  export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME:$PATH

<4>生效环境变量:source /etc/profile

<5>修改Hadoop的配置文件,它们位于$HADOOP_HOME/conf目录下。

分别修改四个配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml;

具体下修改内容如下:(由于修改内容较多,建议使用WinScp进入相关目录下进行编辑和保存,可以节省较多时间和精力)

    5.1【hadoop-env.sh】 修改第九行:

    export JAVA_HOME=/usr/local/jdk/

    如果虚拟机内存低于1G,还需要修改HADOOP_HEAPSIZE(默认为1000)的值:

    export HADOOP_HEAPSIZE=100

    5.2【core-site.xml】 在configuration中增加以下内容(其中的hadoop-master为你配置的主机名):

    <property>

  <name>fs.default.name</name>

  <value>hdfs://hadoop-master:9000</value>

  <description>change your own hostname</description>

  </property>

  <property>

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

  <value>/usr/local/hadoop/tmp</value>

  </property>

    5.3 【hdfs-site.xml】 在configuration中增加以下内容:

    <property>

  <name>dfs.replication</name>

  <value>1</value>

   </property>

   <property>

  <name>dfs.permissions</name>

  <value>false</value>

   </property>

   5.4 【mapred-site.xml】 在configuration中增加以下内容(其中的hadoop-master为你配置的主机名):

    <property>

  <name>mapred.job.tracker</name>

  <value>hadoop-master:9001</value>

  <description>change your own hostname</description>

  </property>

  <6>执行命令对Hadoop进行初始格式化:hadoop namenode –format

hadoop 能做什么,hadoop可以用来干嘛的(11)

<7>执行命令启动Hadoop:start-all.sh(一次性启动所有进程)

hadoop 能做什么,hadoop可以用来干嘛的(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.