欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hadoop学习(day01)-环境搭建

程序员文章站 2022-07-14 15:43:08
...

学习参考资料

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)-环境搭建
  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 ):

<configuration>
  <property>
     <name>hadoop.tmp.dir</name>
     <value>file:/usr/local/hadoop/tmp</value>
     <description>Abase for other temporary directories</description>
  </property>
  <property>
     <name>fs.defaultFs</name>
     <value>hdfs://localhost:9000</value>
  </property>
  <property>
     <name>fs.default.name</name>
     <value>hdfs://localhost:9000</value>
  </property>
</configuration>

   红色标注的部分是我为解决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

  

<configuration>	
   <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

绿色部分是网上推荐加的配置,这在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