Hadoop伪分布式环境配置

大数据与分布式 fireling 2534℃ 0评论

Hadoop是一个开源、高可靠、可扩展的分布式计算框架。它主要包含两个框架:一个是分布式存储框架HDFS,一个分布式计算框架MapReduce,学习Hadoop也主要围绕着这两块问题来。

Hadoop的环境部署,不是太简单。它是基于JVM环境搭建的,如果我们需要多台机器协作,还需要实现SSH免密登录。

官方教程已经很详细地介绍了如何配置Hadoop单机环境,或者配置伪分布式环境,或者是集群配置Hadoop。这里我就参考Hadoop官方教程,简单介绍下Hadoop的伪分布式配置

可以把伪分布式看作是只有一个节点的集群,在这个集群中,这个节点既是Master也是Slave,既是NameNode也是DataNode,既是JobTracker也是TaskTracker。

首先我们需要搭建一个Linux环境,可以是Ubuntu也可以是CentOS。分为三块:用户配置,环境变量配置,SSH配置。

  • 用户配置

可以为启动Hadoop单独建立用户,赋予sudo权限。
  • 环境变量配置

我们需要配置JDK环境。
我们还需要配置Hadoop环境。
  • SSH配置

这里主要是实现SSH免密码登录。在此之前需要确认系统支持SSH。

其次我们可以搭建Hadoop伪分布式环境。分为五块:配置文件系统,格式化文件系统,启动NameNode进程和Datanode进程,执行MapReduce任务,关闭NameNode进程和Datanode进程。

  • 配置文件系统

简单来说,主要是修改core-site.xml和hdfs-site.xml这两个文件。
etc/hadoop/core-site.xml:
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
etc/hadoop/hdfs-site.xml:
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
  • 格式化文件系统

bin/hdfs namenode -format
  • 启动NameNode进程和Datanode进程

sbin/start-dfs.sh 
启动NameNode进程和Datanode进程之后,通过访问网址: http://localhost:50070/, 可以查看NameNode和Datanode信息,还可以在线查看HDFS中的文件。如图所示。

1

  • 执行MapReduce任务

执行HDFS输入input和输出output,伪分布式读取的是HDFS中的文件。比如运行官方demo中的grep:
    bin/hdfs dfs -mkdir input
    bin/hdfs dfs -put etc/hadoop/*.xml input
    bin/hdfs dfs -ls input
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'  
    bin/hdfs dfs -cat output/*
输出结果:
    1    dfsadmin
  • 关闭NameNode进程和Datanode进程

sbin/stop-dfs.sh
每次运行完Hadoop需要关闭文件系统。Hadoop默认不会覆盖output输出文件,因此如果再次运行需要提前手动删除。

从上面可以看出,如果不使用Hadoop,直接运行jar包,可以采用java -jar jar包名 输入 输出的形式,而Hadoop则仅仅简单把java变成了hadoop,成为了hadoop -jar jar包名 输入 输出。对比Java和Hadoop来运行jar包的方式,不难看出,hadoop对于服务器来说是一个可扩展的弹性框架,深刻诠释了“众人拾柴火焰高”的哲学。

转载请注明:宁哥的小站 » Hadoop伪分布式环境配置

喜欢 (0)

您必须 登录 才能发表评论!