linux下安装hadoop2.6.0

  • 准备环境:

    1、ubuntu系统,(我在ubuntu的12.04,14。04以及16.04测试通过。其他版本请自行测试,可参考官方文档!)

     

    2、保持网络     

    3、发现配置代码被当成标签用了,以后凡是代码用图片     

  • 前期准备:

    1、如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户。

    首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户

     

    sudo useradd -m hadoop -s /bin/bash

     

    2、接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:(输入密码时,密码不可见)

              sudo passwd hadoop

       可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:

              sudo adduser hadoop sudo

     

    3、最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面

    使用刚创建的 hadoop 用户进行登陆。

     

    4用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:

             sudo apt-get update

     

    5、后续需要更改一些配置文件,我比较喜欢用的是 vim(vi增强版,基本用法相同),建议安装一下(如果你实在还不会用 vi/vim 的,请将后面用到 vim 的地方改为 gedit,这样可以使用文本编辑器进行修改,并且每次文件更改完成后请关闭整个 gedit 程序,否则会占用终端)

     

              sudo apt-get install vim

        安装软件时若需要确认,在提示处输入 y 即可。

    6、集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

             sudo apt-get install openssh-server

        安装后,可以使用如下命令登陆本机:

              ssh localhost



         此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

    但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。

     

    7、首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

                 exit     # 退出刚才的 ssh localhost

             cd ~/.ssh/    # 若没有该目录,请先执行一次ssh localhost

         ssh-keygen -t rsa      # 会有提示,都按回车就可以

       cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

     

        提示:

        在 Linux 系统中,~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表 “/home/hadoop/”。 此外,命令中的 # 后面的文字是注释。

         此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,如下图所示。

  • 开始安装

    1、安装jdk,jre

             sudo apt-get install openjdk-8-jre openjdk-8-jdk

     

    2、接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置

             vim ~/.bashrc

        3、默认安装位置为/usr/lib/jvm/java-8-openjdk-amd64 通过:

    export JAVA_HOME=JDK安装路径

     

    4、接着还需要让该环境变量生效,执行如下代码:

             source ~/.bashrc    # 使变量设置生效

     

    5、设置好后我们来检验一下是否设置正确:

           echo $JAVA_HOME     # 检验变量值

           java -version    #查看版本信息(如果正确的话)

           $JAVA_HOME/bin/java -version    # 与直接执行 java -version 的效果一样

  • 安装 Hadoop 2.6.0

    Hadoop 2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

    本文涉及的文件均通过浏览器下载,默认保存在 “下载” 目录中(若不是请自行更改 tar 命令的相应目录)。另外,本教程选择的是 2.6.0 版本,如果你用的不是 2.6.0 版本,则将所有命令中出现的 2.6.0 更改为你所使用的版本。

     

    1、我们选择将 Hadoop 安装至 /usr/local/ 中:

          sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local #解压到/usr/local中

         cd /usr/local/

         sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改成hadoop

         sudo chown -R hadoop ./hadoop       # 修改文件权限

     

    2、Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

           cd /usr/local/hadoop

          ./bin/hadoop version

     

  • Hadoop伪分布式配置

    1、Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

            Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

     

    2、修改配置文件 core-site.xml (通过 vim编辑会比较方便: 

       vim ./etc/hadoop/core-site.xml

         将当中的

       

       #暂时无配置

     

       修改为下面配置:



          

                hadoop.tmp.dir

                file:/usr/local/hadoop/tmp

                Abase for other temporary directories.       

          

                fs.defaultFS

                hdfs://localhost:9000

          

     

    3、同样的,修改配置文件 hdfs-site.xml:

          vim ./etc/hadoop vim ./etc/hadoop/hdfs-site.xml 

          

                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

          

    4、配置完成后,执行 NameNode 的格式化:

       ./bin/hdfs namenode -format

    成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。如果出错,请大家仔细查看下错误原,以及前面的配置有没有错!

    ./sbin/start-dfs.sh

    若出现如下SSH提示,输入yes即可。

    5、启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

  • 启动YARN

    (伪分布式不启动 YARN 也可以,一般不会影响程序执行)

     

    6、有的读者可能会疑惑,怎么启动 Hadoop 后,见不到书上所说的 JobTracker 和 TaskTracker,这是因为新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator)。

    YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。

     

    7、上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

      首先修改配置文件 mapred-site.xml,这边需要先进行重命名:

       mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

     

    8、然后再进行编辑,同样使用 vim编辑会比较方便些

       vim ./etc/hadoop/mapred-site.xml 



          

                mapreduce.framework.name

                yarn

          

     

    9、接着修改配置文件 yarn-site.xml:

    vim ./etc/hadoop/yarn.site.xml



          

                yarn.nodemanager.aux-services

                mapreduce_shuffle

              

     

    10、然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh):

    ./sbin/start-yarn.sh      # 启动YARN

    ./sbin/mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

     

    11、开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程,如下图所示。

    同样的,关闭 YARN 的脚本如下:

      ./sbin/stop-yarn.sh

      ./sbin/mr-jobhistory-daemon.sh stop historyserver

     

    (最后可以这样配置  ~/.bashrc文件以方便下次不用进入/usr/local/hadoop文件夹下就可以执行了,例如直接输入start-dfs.sh或stop-dfs.sh等

       首先sudo vim ~/.bashrc

     

       然后再在文件头添加如下文字:

    #Hadoop
    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin


     然后保存时~/.bashrc生效

    source ~/.bashrc

    最后可以直接输入start-dfs.sh等命令执行了)