zoukankan      html  css  js  c++  java
  • 二.hadoop环境搭建

    目录:

    目录见文章1

    文章:官方文档hadoop2.7.4

    目的

    这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。

    概述

    • GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。
    • Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。
    • (1) JavaTM  JDK1.5+,必须安装。(2)ssh 必须安装并且保证 sshd一直运行(以便用Hadoop 脚本管理远端Hadoop守护进程)。

    安装软件

    如果你的集群尚未安装所需软件,你得首先安装它们。

    以Ubuntu Linux为例:

    $ sudo apt-get install openssh-server
    $ sudo apt-get install rsync

    下载

    为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版

    运行Hadoop集群的准备工作

    解压所下载的 Hadoop 发行版。编辑 etc/hadoop/hadoop-env.sh 文件,定义如下参数:  

    # 设置 Java 的安装目录
    export JAVA_HOME=/usr/software/java/jdk1.8

    尝试如下命令:

    $ bin/hadoop 
    将会显示hadoop 脚本的使用文档。

    现在你可以用以下三种支持的模式中的一种启动Hadoop集群:

    • 单机模式
    • 伪分布式模式
    • 完全分布式模式

    单机模式的操作方法

    默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。

    下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。 

    $ mkdir input 
    $ cp etc/hadoop/*.xml input 
    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep input output 'dfs[a-z.]+'
    $ cat output/*

    输出结果如下:

    2    dfs.replication
    1    dfsadmin
    1    dfs.name.dir
    1    dfs.data.dir

    伪分布式模式的操作方法

    Hadoop 可以在单节点上以所谓的伪分布式模式运行,此时每一个 Hadoop 守护进程都作为一个独立的 Java 进程运行。

    配置:

    etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS.name</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
            <name>fs.default.name</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/software/hadoop/tmp</value>
        </property>
    </configuration>

     附:配置fs.default.name的原因:http://blog.csdn.net/lisongjia123/article/details/77414189

    etc/hadoop/hdfs-site.xml

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

     由于我们只有一台主机和一个为分部模式的datanode,所以dfs.replication值为1

    免密码 ssh 设置(跟上一节的hadoop入门须知里一样)

    现在确认 能否不输入口令就用 ssh 登录 localhost:

    $ ssh localhost

    如果不输入口令就无法用 ssh 登陆 localhost,执行下面的命令:

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    执行

    下面演示本地运行一个 MapReduce 的 job,以下是运行步骤。

    (1)格式化一个新的分布式文件系统:

    $ bin/hdfs namenode -format

    (2)启动 NameNode 守护进程和 DataNode 守护进程:

    $ sbin/start-dfs.sh

    Hadoop 守护进程的日志写入到 $HADOOP_LOG_DIR目录(默认是 $HADOOP_HOME/logs)

    (3)浏览 NameNode 的网络接口,它们的地址默认为:

    NameNode - http://localhost:50070/

    注意:这个http://localhost:50070/是在linux下的访问的localhost:50070,windows下要改成linux的http://[ip]:50070 来访问

    (4)创建 HDFS 目录来执行 MapReduce 的 job:

    $ bin/hdfs dfs -mkdir /user
    $ bin/hdfs dfs -mkdir /user/<username>

    (5)将输入文件拷贝到分布式文件系统:

    $ bin/hdfs dfs -put input input
    hadoop fs -put < local file > < hdfs file >
    //这一行 会在上个步骤的文件目录下,创建input文件夹

     

    (6)运行发行版提供的示例程序:

    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep input output 'dfs[a-z.]+'

    此处,使用命令

    $ bin/hdfs dfs -ls input  可以查看到input目录下刚拷贝的xml文件

    $ bin/hdfs dfs -ls /    可以查看目录

    如果报错output已存在,需要删除分布式系统中已存在的output文件夹

    $ bin/hdfs dfs -ls    查看到分布式系统新建的文件夹,如input和步骤6生成的output文件夹

    $ bin/hdfs dfs –rm –r output  可删除分布式系统output文件夹

    附录:hadoop HDFS常用文件操作命令

    (7)查看输出文件

    将输出文件从分布式文件系统拷贝到本地文件系统查看:

    $ bin/hdfs dfs -get output output
    $ cat output/*

    或者,在分布式文件系统上查看输出文件:

    $ bin/hdfs dfs -cat output/*

    (8)完成全部操作后,停止守护进程:

    $ sbin/stop-dfs.sh
  • 相关阅读:
    太赞了!两个技巧帮你记住复杂 Linux 命令!
    Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
    Spring Cloud 学习 之 Spring Cloud Eureka(架构)
    Spring Cloud 学习 之 Spring Cloud Eureka(搭建)
    Spring Cloud 学习 之 Spring Cloud Eureka(概述)
    Spring Boot学习 之 Spring Boot Actuator(一)
    java基础篇 之 final关键字
    spring学习笔记(九)事务学习(上)
    JAVA基础篇 之 类的初始化
    JAVA基础篇 之 finalize()方法的作用
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/7596238.html
Copyright © 2011-2022 走看看