hadoop学习(day01)-环境搭建

学习参考资料

hadoop 官网:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html

厦门大学数据库实验室文章:http://dblab.xmu.edu.cn/blog/install-hadoop/

国外hadoop环境搭建:http://www.bogotobogo.com/Hadoop/BigData_hadoop_Install_on_ubuntu_single_node_cluster.php

(备注:其实官网和厦门大学的hadoop伪集群搭建过程已经很清晰了,但是自己在对照操作时还是由于没有完全吻合他们的步骤,导致出现了一些不同的问题,为了解决这些问题,增加或者修改了一些东西,因此重新记录一遍)


开发环境准备:

操作系统环境:Ubuntu16.0

JDK:jdk-8u151-linux-x64 - 百度云下载(https://pan.baidu.com/s/1sl7ey4X)

Hadoop 安装包:hadoop-2.9.0.tar.gz -百度云下载(https://pan.baidu.com/s/1o8Nz8KE)

 

搭建的主要环节:

Step1: 在Ubuntu16.0 中搭建JAVA环境并进行成功与否的测试。

Step2:搭建hadoop伪集群环境用于学习和测试,此过程主要包括四点:

  •     Hadoop 伪集群的环境变量设置。
  •     Haddop 伪集群配置文件的修改。
  •     启动 hadoop 伪集群环境并进行成功与否的测试。
  •     在伪集群环境中运行Hadoop自带的demo 进行作业测试并且查看作业结果。

开始搭建:

Step1-在Ubuntu 16.0 中安装JAVA运行环境

  1.       到JDK官网下载JDK(或者我的百度云盘:https://pan.baidu.com/s/1sl7ey4X)到Ubuntu首页,如下所示:hadoop学习(day01)-环境搭建_第1张图片
  2. 建立java文件夹-弹出终端(Ctrl+Alt+t),运行命令:sudo mkdir /usr/local/java 命令建立java文件夹。
  3. 复制jak 到新建的java 目录,命令如下: cp jdk-8u151-linux-x64.tar.gz /usr/local/java
  4. 解压JDK,进行新建好的java 目录下(cd /usr/local/java),运行命令如下:sudo  tar -xzvf  jdk-8u151-linux-x64.tar.gz 解压jdk压缩包,解压完成后运行 sudo -rm -rf jdk-8u151-linux-x64.tar.gz 删除掉压缩包。
  5. 配置全局的JAVA环境变量,即所有用户都可以访问到,运行命令:sudo gedit ~/.bashrc 打开环境配置文件,在末尾增加以下配置:  
    export JAVA_HOME=/usr/local/java/jdk1.8.0_151
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

  6. 配置好环境变量后,在终端运行 java -version 后会有版本号信息出现:                                                                                                                                                                     java version "1.8.0_151"
    Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

    如此就是JAVA环境变量安装好了。

             此过程参考文章如下:Ubuntu 下java环境安装:http://www.linuxidc.com/Linux/2015-01/112030.htm


  Step2-搭建hadoop伪集群环境

     1. 设置hadoop 环境变量,这里设置了全局的两个有关hadoop的环境变量,一个是HADOOP_HOME,另外一个是HADOOP_CONF_DIR,配置如下(参考java环境变量的设置):

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

这在厦门大学的教程中并没有指出,我这里增加这两个环境变量是因为后面我启动整个伪集群的时候,namenode和datanode都无法启动,并且报了一个错误:

    Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
Starting namenodes on []
Error: Cannot find configuration directory: /etc/hadoop
Error: Cannot find configuration directory: /etc/hadoop
Starting secondary namenodes [0.0.0.0]

Error: Cannot find configuration directory: /etc/hadoop

这里看出好像是某个路径配置的问题,网上的说法是新下载的hdaoop安装包的配置文件的位置变成了etc/hadoop下面,而之前的则是在conf/hadoop下面,因此需要设置一下。

     2. 复制hadoop-2.9.0.tar.gz 压缩包到/usr/local 目录下,解压文件,并命名为hadoop,具体过程参考jdk的操作。

     3. 配置伪集群相关的hadoop配置文件,这里包括两个配置文件:core-site.xml 和hdfs-site.xml ,这两个文件都在hadoop安装目录的etc/hadoop目录下。

    4. 修改core-site.xml文件如下(gedit /usr/local/hadoop/etc/hadoop/core-site.xml ):


  
     hadoop.tmp.dir
     file:/usr/local/hadoop/tmp
     Abase for other temporary directories
  
  
     fs.defaultFs
     hdfs://localhost:9000
  
  
     fs.default.name
     hdfs://localhost:9000
  

   红色标注的部分是我为解决namenode无法启动时添加的,目前不知道起什么作用。

 5. 修改hdfs-site.xlm文件(gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml ),内容如下:

在HDFS文件系统中创建文件夹 ./bin/hdfs dfs -mkdir -p /user/input(-p 循环创建目录)
加载文件到HDFS: ./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/input
查看HDFS分布式文件系统的文件 ./bin/hadoop fs -ls /user(/user是目录)
查看HDFS作业结果: ./bin/hdfs dfs -cat /user/output/*
将HDFS上的文件取回到本地系统:./bin/hdfs dfs -get /user/output ./output
删除HDFS上的文件:./bin/hdfs dfs -rm -r /user/output

  

	
   
        dfs.replication
        1
    
    
        dfs.namenode.name.dir
        file:/usr/local/hadoop/tmp/dfs/name
    
    
        dfs.datanode.data.dir
        file:/usr/local/hadoop/tmp/dfs/data
    

绿色部分是网上推荐加的配置,这在hadoop官网并没有指明,这里是为了解决一个问题:

伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

  6. 开始启动Hadoop伪集群环境,这里需要注意的是以下所有的操作需要使用SHH登录,即在终端运行SSH localhost后,在开始启动伪集群环境,具体的操作可以参考厦门大学相关的步骤:http://dblab.xmu.edu.cn/blog/install-hadoop/

  这里我又出现了问题就是namenode无法启动,启动集群时使用./sbin/start-dfs.sh 命令无法成功,后来百度使用./sbin/start-all.sh 命令就能把整个集群启动成功,目前不知道原因。

 jps查看当前运行的守护进程如下:

9905 SecondaryNameNode
10067 ResourceManager
10371 NodeManager
14729 Jps
9707 DataNode
9550 NameNode


从这里看出整个伪集群启动成功,可以运行相关的测试demo进行数据分析,通过URL查看集群健康状况:http://localhost:50070/dfshealth.html#tab-overview


以下是操作HDFS文件系统的命令:

在HDFS文件系统中创建文件夹 ./bin/hdfs dfs -mkdir -p /user/input(-p 循环创建目录)
加载文件到HDFS: ./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/input
查看HDFS分布式文件系统的文件 ./bin/hadoop fs -ls /user(/user是目录)
查看HDFS作业结果: ./bin/hdfs dfs -cat /user/output/*
将HDFS上的文件取回到本地系统:./bin/hdfs dfs -get /user/output ./output
删除HDFS上的文件:./bin/hdfs dfs -rm -r /user/output


你可能感兴趣的:(hadoop,环境搭建)