Hadoop2 伪分布式部署

一.简介

二.安装部署

三.运行hadoop例子并测试部署环境

四.注意的地方

一.简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming
access)文件系统中的数据,则MapReduce为海量的数据提供了计算。Hadoop 容易开发和运行处理大规模数据的平台。

HDFS是Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode,HDFS采用master/slave架构,一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。如图所示所示:

Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5.低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

Hadoop 伪分布式模式是在单机上模拟 Hadoop 分布式,条件有限,所以linux虚拟机上部署Hadoop 伪分布式模式来模拟 Hadoop 分布式。

二.安装部署

Linux虚拟机上JDK安装配置,这里就不介绍,我之前文章有介绍过了。

第一步:ssh无密码验证配置

1.查看一下SSH是否有安装

2.基于空口令创建一个新的SSH密钥,启用无密码登录

#ssh-keygen -t rsa -P ‘‘ -f~/.ssh/id_rsa

#cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

3.测试一下是否需要密码登陆

#ssh localhost   如图所示:

这说明已经安装成功,第一次登录时会询问你是否继续链接,输入yes即可进入。

说明:

    因为在Hadoop的安装过程中,如果不配置无密码登录,每次启动Hadoop,需要输入密码登陆到DataNode,我们通常会做集群,所以这样就不方便我们操作。

第二步:部署hadoop

1.下载 http://hadoop.apache.org/

我们这边下载的是hadoop-2.6.0.tar.gz

2.mkdir /usr/local/hadoop

3.#tar -zxvf hadoop-2.6.0.tar.gz//解压

4.#vi  /etc/profile  //配置hadoop

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0

export PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

#source/etc/profile //使配置生效

5.配置core-site.xml,hdfs-site.xml及mapred-site.xml

#cd hadoop-2.6.0//进入hadoop解压的目录

etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://192.168.74.129:9000</value>
</property>
  <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/hadoop-2.6.0/tmp</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

 <configuration>
      <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hadoop-2.6.0/hdfs/name</value>
    <description>对namenode存储路径</description>
      </property>   

    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hadoop-2.6.0/hdfs/data</value>
    <description>对datanode存储路径</description>
    </property>   

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>hdfs://192.168.74.129:9001</value>
</property>
 <property>
        <name>mapred.local.dir</name>
        <value>/usr/local/hadoop/hadoop-2.6.0/mapred/local</value>
         <description>存储mapred自己使用的路径</description>
    </property>   

    <property>
        <name>mapred.system.dir</name>
        <value>/usr/local/hadoop/hadoop-2.6.0/mapred/system</value>
        <description>存储mapred系统级别的路径,可以共享</description>
    </property>
</configuration>

6.修改hadoop-env.sh的jdk路径

#vi  etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_67

7.#hadoop namenode -format //格式化HDFS文件系统以创建一个空大文件系统。

执行成功如图所示:

生成core-site.xml,hdfs-site.xml及mapred-site.xml对应的目录,如图所示:

第三步:启动hadoop服务   

1.#sbin/start-all.sh  //启动    sbin/stop-all.sh //关闭

2.#jps//验证一下

3.在浏览器查看hadoop信息

http://192.168.74.129:50070

http://192.168.74.129:8088  hadoop管理页面

4.可以在 cd /usr/local/hadoop/hadoop-2.6.0/logs 查看日志

  三.运行hadoop例子并测试部署环境

      

1.我们从官方网的例子来运行一下,看看我们部署的hadoop环境是否正确,统计数代码如下:

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {

  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

上传到hadoop解压的目录,如图所示:

2.查看有没有目录

#hadoop fs –ls  //刚部署完,我们还没创建目录,所以会显示没目录如图所示:

3.我们新建一个file0.txt文本,输入内容,也就是我们要统计的单词,如图所示:

4.创建输入和输出目录

先在hdfs上建个文件夹

#bin/hdfs dfs -mkdir –p  /user/root/input

#bin/hdfs dfs -mkdir -p  /user/root/output

5.把要统计的文本上传到hdfs的输入目录下

# bin/hdfs dfs -put/usr/local/hadoop/hadoop-2.6.0/test/* /user/root/input      //把tes/file0文件上传到hdfs的/user/root/input中

6.查看

#bin/hdfs dfs -cat /user/root/input/file0

7.编译我们刚才写的统计Java类WordCount.java

#bin/hadoop com.sun.tools.javac.Main WordCount.java

8.编译好的WordCount.class创建一个 jar

jar cf wc.jar WordCount*.class

9.执行统计

#bin/hadoop jar wc.jar WordCount /user/root/input/user/root/output/count

10.查看输出output

#bin/hdfs dfs -cat/user/root/output/count/part-r-00000

 四.注意的地方

1.#hadoop namenode -format格式化时,HostName配置不对时,会报这个错误,如图所示:

分析:

#hsotname

这时在/etc/hosts文件中找不到对应的这个hostname

解决方法:

1)vi /etc/hosts //修改设置的ip

2)#vi /etc/sysconfig/network  //修改hostname

3)/etc/rc.d/init.d/network restart //重启一下

如果没修改过来,就重启一下Linux虚拟机

2.#hadoop fs –ls会出现

Java HotSpot(TM) Server VM warning: Youhave loaded library/usr/local/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0 which might havedisabled stack guard. The VM will try to fix the stack guard now.

It‘s highly recommended that you fix thelibrary with ‘execstack -c <libfile>‘, or link it with ‘-z noexecstack‘.

解决:

#vi /etc/profile

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

#source /etc/profile

在执行一下hadoop fs –ls就不会出现这样的问题,如图所示:

时间: 2024-10-12 16:46:06

Hadoop2 伪分布式部署的相关文章

hadoop2.5.1伪分布式部署

可参阅官方文档 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html 文件下载: http://mirrors.hust.edu.cn/apache/hadoop/common/ 注:可直接使用2.5.2或2.6.0版本   都解决了2.5.1中不稳定bug 1       伪分布式部署 以测试通过的为例 Linux version 2.6.32-431.el6.x86

大数据之伪分布式部署之终极篇

------------------------------软件版本-------------------------------------- RHEL6.8 hadoop2.8.1 apache-maven-3.3.9 ? ? ? findbugs-1.3.9 protobuf-2.5.0.tar.gz jdk-8u45 ------------------------------软件版本--------------------------------------- 1.Hadoop宏观:

大数据之---hadoop伪分布式部署(HDFS)全网终极篇

1.软件环境RHEL6 jdk-8u45 hadoop-2.8.1.tar.gz ssh xx.xx.xx.xx ip地址 hadoop1 xx.xx.xx.xx ip地址 hadoop2 xx.xx.xx.xx ip地址 hadoop3 xx.xx.xx.xx ip地址 hadoop4 xx.xx.xx.xx ip地址 hadoop5 本次部署只涉及伪分布式部署只是要主机hadoop1 2.伪分布式部署伪分布式部署文档参考官方网站hadoopApache > Hadoop > Apache

大数据之---Yarn伪分布式部署和MapReduce案例

1.软件环境 RHEL6 角色 jdk-8u45 hadoop-2.8.1.tar.gz ? ssh xx.xx.xx.xx ip地址 NN hadoop01 xx.xx.xx.xx ip地址 DN hadoop02 xx.xx.xx.xx ip地址 DN hadoop03 xx.xx.xx.xx ip地址 DN hadoop04 xx.xx.xx.xx ip地址 DN hadoop05 本次涉及伪分布式部署只是要主机hadoop01,软件安装参考伪分布式部署终极篇 2.配置yarn和mapre

Hadoop2经典分布式部署模式

Hadoop2经典分布式部署模式 基于QJN的HA模式的分布式部署,不含Federation模块的实践是一个经典的Hadoop2的高可用的分布式部署模式. 1.准备测试环境 准备4台PC服务器做Hadoop2部署 ip hostname namenode fc datanode rm nodemanage QJN 10.71.84.237 hadoop201 Y Y Y Y Y Y 10.71.84.223 hadoop202 Y Y Y Y Y Y 10.71.84.222 hadoop203

windows下hadoop的单机伪分布式部署(3)

下面介绍myeclipse与hadoop的集成. 我用的myeclipse版本是8.5. 1.安装hadoop开发插件 在hadoop1.2.1版本的安装包contrib/目录下,已经不再提供hadoop-eclipse-pligin-1.2.1.jar; 而是提供了源代码文件,需要我们自行重新编译成jar包文件:这里方便,大家可以从这里下载: hadoop-eclipse-plugin-1.2.1.jar.pdf 由于博客上传文件的类型限制,故添加了pdf后缀,下载之后重命名,去掉".pdf&

windows下hadoop的单机伪分布式部署(1)

hadoop的运行环境应该是在linux环境.如果想在windows环境下安装和运行hadoop,一般有两种方式:一种是VM的方式linux操作系统,这样可以实现全linux环境的hadoop运行:另一种方式安装cygwin模拟linux环境,该方法相对比较简单方便. 本文采取cywin的方式.下面将介绍下cygwin的安装与配置: (1)cygwin的安装 下载cygwin安装文件:http://cygwin.com; 我用的是64位版:操作系统为win7: 下载的setup文件实际上只是一个

ActiveMQ伪分布式部署

本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在同一台虚拟机上搭建高可用的Activemq服务,集群数量包含3个Activemq,当Activemq可用数>=2时,整个集群可用. 本文Activemq的集群数量为3个,分别命名为mq1,mq2,mq3   二.概念介绍 1.伪集群 集群搭建在同一台虚拟机上,3个Activemq分别使用不同的端口提

windows下hadoop的单机伪分布式部署(2)

下面开始hadoop的安装与配置: (1)安装jdk 我安装的是JDK1.7.0_40,windows x64版的 下载完之后,直接点击安装, 我的安装路径为默认路径:C:\Program Files\Java\jdk1.7.0_40: 安装完毕后,设置环境变量: JAVA_HOME指向JDk安装目录 PATH指向JDK的bin目录 设置完成之后,在cmd中 输入java命令,如果出现一下画面,即为安装成功: (2)安装hadoop 下载hadoop,http://hadoop.apache.o