栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hadoop安装

hadoop安装

本教程适合于在 CentOS 6.x 系统中安装原生 Hadoop 2,适用于Hadoop 2.7.1, Hadoop 2.6.0 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,相信按照步骤来,都能顺利在 CentOS 中安装并运行 Hadoop。

环境

本教程使用CentOS 6.4 32位作为系统环境,请自行安装系统。如果用的是 Ubuntu 系统,请查看相应的Ubuntu安装Hadoop教程。

本教程基于原生 Hadoop 2,在Hadoop 2.6.0 (stable)版本下验证通过,可适合任何 Hadoop 2.x.y 版本,例如 Hadoop 2.7.1, Hadoop 2.4.1等。

Hadoop版本

Hadoop 有两个主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比较老的教材上用的可能是 0.20 这样的版本。Hadoop 2.x 版本在不断更新,本教程均可适用。如果需安装 0.20,1.2.1这样的版本,本教程也可以作为参考,主要差别在于配置项,配置请参考官网教程或其他教程。

新版是兼容旧版的,书上旧版本的代码应该能够正常运行(我自己没验证,欢迎验证反馈)。

装好了 CentOS 系统之后,在安装 Hadoop 前还需要做一些必备工作。

创建hadoop用户

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

首先点击左上角的 “应用程序” -> “系统工具” -> “终端”,首先在终端中输入su,按回车,输入 root 密码以 root 用户登录,接着执行命令创建新用户 hadoop:

    su # 上述提到的以 root 用户登录useradd -m hadoop -s /bin/bash # 创建新用户hadoop

Shell 命令

如下图所示,这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为shell。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2itBuQnU-1648197764452)(http://cdn.powerxing.com/imgs/install-hadoop-centos-01-craete-user.png)]CentOS创建hadoop用户

接着使用如下命令修改密码,按提示输入两次密码,可简单的设为 “hadoop”(密码随意指定,若提示“无效的密码,过于简单”则再次输入确认就行):

    passwd hadoop

Shell 命令

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

    visudo

Shell 命令

如下图,找到root ALL=(ALL) ALL这行(应该在第98行,可以先按一下键盘上的ESC键,然后输入:98(按一下冒号,接着输入98,再按回车键),可以直接跳到第98行 ),然后在这行下面增加一行内容:hadoop ALL=(ALL) ALL(当中的间隔为tab),如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kxsXCnWF-1648197764453)(http://cdn.powerxing.com/imgs/install-hadoop-centos-02-add-sudo.png)]为hadoop增加sudo权限

添加好内容后,先按一下键盘上的ESC键,然后输入:wq(输入冒号还有wq,这是vi/vim编辑器的保存方法),再按回车键保存退出就可以了。

最后注销当前用户(点击屏幕右上角的用户名,选择退出->注销),在登陆界面使用刚创建的 hadoop 用户进行登陆。(如果已经是 hadoop 用户,且在终端中使用su登录了 root 用户,那么需要执行exit退出 root 用户状态)

准备工作

使用 hadoop 用户登录后,还需要安装几个软件才能安装 Hadoop。

CentOS 使用 yum 来安装软件,需要联网环境,首先应检查一下是否连上了网络。如下图所示,桌面右上角的网络图标若显示红叉,则表明还未联网,应点击选择可用网络。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrOOSocm-1648197764454)(http://cdn.powerxing.com/imgs/install-hadoop-centos-04-connect-to-net.png)]检查是否联网

连接网络后,需要安装 SSH 和 Java。

安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),一般情况下,CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验:

    rpm -qa | grep ssh

Shell 命令

如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pkuj08CB-1648197764455)(http://cdn.powerxing.com/imgs/install-hadoop-centos-03-install-ssh.png)]检查是否安装了SSH

若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):

    sudo yum install openssh-clientssudo yum install openssh-server

Shell 命令

接着执行如下命令测试一下 SSH 是否可用:

    ssh localhost

Shell 命令

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gL7UM5SA-1648197764456)(http://cdn.powerxing.com/imgs/install-hadoop-centos-05-ssh-localhost.png)]测试SSH是否可用

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

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

    exit # 退出刚才的 ssh localhostcd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhostssh-keygen -t rsa # 会有提示,都按回车就可以cat id_rsa.pub >> authorized_keys # 加入授权chmod 600 ./authorized_keys # 修改文件权限

Shell 命令

~的含义

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1alzICLs-1648197764456)(http://cdn.powerxing.com/imgs/install-hadoop-centos-08-ssh-no-password.png)]SSH无密码登录

安装Java环境

Java 环境可选择 Oracle 的 JDK,或是 OpenJDK,现在一般 Linux 系统默认安装的基本是 OpenJDK,如 CentOS 6.4 就默认安装了 OpenJDK 1.7。按http://wiki.apache.org/hadoop/HadoopJavaVersions中说的,Hadoop 在 OpenJDK 1.7 下运行是没问题的。需要注意的是,CentOS 6.4 中默认安装的只是 Java JRE,而不是 JDK,为了开发方便,我们还是需要通过 yum 进行安装 JDK,安装过程中会让输入 [y/N],输入 y 即可:

    sudo yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

Shell 命令

通过上述命令安装 OpenJDK,默认安装位置为 /usr/lib/jvm/java-1.7.0-openjdk(该路径可以通过执行rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac'命令确定,执行后会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了)。OpenJDK 安装后就可以直接使用 java、javac 等命令了。

接着需要配置一下 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置(扩展阅读:设置Linux环境变量的方法和区别):

    vim ~/.bashrc

Shell 命令

在文件最后面添加如下单独一行(指向 JDK 的安装位置),并保存:

    export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk

Shell

如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4XMdFsph-1648197764457)(http://cdn.powerxing.com/imgs/install-hadoop-centos-10-set-java-home.png)]设置JAVA_HOME环境变量

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

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

Shell 命令

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

    echo $JAVA_HOME # 检验变量值java -version$JAVA_HOME/bin/java -version # 与直接执行 java -version 一样

Shell 命令

如果设置正确的话,$JAVA_HOME/bin/java -version会输出 java 的版本信息,且和java -version的输出结果一样,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yipwXAV0-1648197764458)(http://cdn.powerxing.com/imgs/install-hadoop-centos-11-echo-java-home.png)]成功设置JAVA_HOME环境变量

这样,Hadoop 所需的 Java 运行环境就安装好了。

安装 Hadoop 2

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

下载时强烈建议也下载hadoop-2.x.y.tar.gz.mds这个文件,该文件包含了检验值可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。

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

    cat ~/下载/hadoop-2.6.0.tar.gz.mds | grep ‘MD5’ # 列出md5检验值# head -n 6 ~/下载/hadoop-2.7.1.tar.gz.mds # 2.7.1版本格式变了,可以用这种方式输出md5sum ~/下载/hadoop-2.6.0.tar.gz | tr “a-z” “A-Z” # 计算md5值,并转化为大写,方便比较

Shell 命令

若文件不完整则这两个值一般差别很大,可以简单对比下前几个字符跟后几个字符是否相等即可,如下图所示,如果两个值不一样,请务必重新下载。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyAPszMY-1648197764458)(http://cdn.powerxing.com/imgs/install-hadoop-centos-12-md5.png)]检验文件完整性

我们选择将 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 # 将文件夹名改为hadoopsudo chown -R hadoop:hadoop ./hadoop # 修改文件权限

Shell 命令

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

    cd /usr/local/hadoop./bin/hadoop version

Shell 命令

相对路径与绝对路径的区别

请务必注意命令中的相对路径与绝对路径,本文后续出现的./bin/...,./etc/...等包含 ./ 的路径,均为相对路径,以 /usr/local/hadoop 为当前目录。例如在 /usr/local/hadoop 目录中执行./bin/hadoop version等同于执行/usr/local/hadoop/bin/hadoop version。可以将相对路径改成绝对路径来执行,但如果你是在主文件夹 ~ 中执行./bin/hadoop version,执行的会是/home/hadoop/bin/hadoop version,就不是我们所想要的了。

Hadoop单机配置(非分布式)

Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar可以看到所有例子),包括 wordcount、terasort、join、grep 等。

在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,最后输出结果到 output 文件夹中。

    cd /usr/local/hadoopmkdir ./inputcp ./etc/hadoopPath outputPath = new Path(args[1]);outputPath.getFileSystem(conf).delete(outputPath, true);

    Java

    若要关闭 Hadoop,则运行

      ./sbin/stop-dfs.sh

    Shell 命令

    注意

    下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行./sbin/start-dfs.sh就可以!

    启动YARN

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

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

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

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

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

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

    Shell 命令

    然后再进行编辑,同样使用 gedit 编辑会比较方便些gedit ./etc/hadoop/mapred-site.xml:

       
      
           mapreduce.framework.name
      
           yarn
      
       
      

    XML

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

       
      
           yarn.nodemanager.aux-services
      
           mapreduce_shuffle
      
           
      

    XML

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

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

    Shell 命令

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k8tqvouw-1648197764465)(http://cdn.powerxing.com/imgs/install-hadoop-centos-21-start-yarn.png)]开启YARN

    启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster,如下图所示。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WccWZFNU-1648197764465)(http://cdn.powerxing.com/imgs/install-hadoop-centos-22-yarn-cluster.png)]开启YARN后可以查看任务运行信息

    但 YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了。

    不启动 YARN 需重命名 mapred-site.xml

    如果不想启动 YARN,务必把配置文件mapred-site.xml重命名,改成 mapred-site.xml.template,需要用时改回来就行。否则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template。

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

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

    Shell 命令

    自此,你已经掌握 Hadoop 的配置和基本使用了。

    附加教程: 配置PATH环境变量

    在这里额外讲一下 PATH 这个环境变量(可执行echo $PATH查看,当中包含了多个目录)。例如我们在主文件夹 ~ 中执行ls这个命令时,实际执行的是/bin/ls这个程序,而不是~/ls这个程序。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。

    上面的教程中,我们都是先进入到 /usr/local/hadoop 目录中,再执行./sbin/hadoop,实际上等同于运行/usr/local/hadoop/sbin/hadoop。我们可以将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就可以直接通过start-dfs.sh开启 Hadoop,也可以直接通过hdfs访问 HDFS 的内容,方便平时的操作。

    在前面我们设置 HADOOP 环境变量时,我们已经顺便设置了 PATH 变量(即 “export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin:$HADOOP_HOME/bin”),那么以后我们在任意目录中都可以直接通过执行start-dfs.sh来启动 Hadoop 或者执行hdfs dfs -ls input查看 HDFS 文件了,读者不妨现在就执行hdfs dfs -ls input试试看。

    安装Hadoop集群

    在平时的学习中,我们使用伪分布式就足够了。如果需要安装 Hadoop 集群,请查看Hadoop集群安装配置教程。

    相关教程

    使用Eclipse编译运行MapReduce程序: 用文本编辑器写 Java 程序是不靠谱的,还是用 Eclipse 比较方便。使用命令行编译打包运行自己的MapReduce程序: 有时候需要直接通过命令来编译 MapReduce 程序。 参考资料

    Hadoop: Setting up a Single Node ClusterHow to Setup Hadoop 2.7.1 on CentOS, Ubuntu & LinuxMintYarn简单介绍及内存配置

    )

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号