zoukankan      html  css  js  c++  java
  • Hadoop单机/伪分布式集群搭建(新手向)


    此文已由作者朱笑笑授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。



    本文主要参照官网的安装步骤实现了Hadoop伪分布式集群的搭建,希望能够为初识Hadoop的小伙伴带来借鉴意义。

    环境:

    (1)系统环境:CentOS 7.3.1611 64位

    (2)Java版本:OpenJDK 1.8.0

    配置Hadoop单节点集群前准备

    1、创建hadoop用户:

     新建用户用于hadoop使用:

    (1)打开终端,输入命令su,回车,输入root的密码以root用户登录,并创建名为hadoop的新用户:

    • useradd -m Hadoop -s /bin/bash


    (2)修改用户密码:

    • passwd hadoop


    (3)为使用方便,给hadoop用户提升权限,否则hadoop用户在使用sudo命令时会报出:hadoop不在sudoers文件中。此事将被报告;

    a. 切换到root用户,查看/etc/sudoers文件权限,默认权限为只读

           


    b. 修改/etc/sudoers文件权限为读写权限:chmod 777 /etc/sudoers


     c. 修改/etc/sudoers文件内容,执行visudo或者vim /etc/sudoers


    如下图,在 root ALL=(ALL) ALL 这行下面增加一行内容:hadoop ALL=(ALL) ALL (当中的间隔为tab,说明:格式为{用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围}),如下图所示:

         


    若要在执行sudo命令时免输入密码,可以将上述添加的内容改为:hadoop ALL=(ALL) NOPASSWD:ALL。

    d. 保存退出,恢复/etc/sudoers文件的访问权限为440;

    (4)切换至hadoop用户;

    2、安装SSH及配置免密码登录

     集群和单节点模式都需要使用SSH登陆,一般情况下,CentOS中默认安装了SSH client、SSH server,可以通过以下命令进行检验:

    • rpm -qa | grep ssh


    若已经安装,则返回如下内容,说明已经包含了SSH client和SSH server,无需再安装:

           


     若没有安装SSH client、SSH server,则可以通过yum进行安装:

    • sudo yum install openssh-clients

    • sudo yum install openssh-server


    测试SSH是否可用,可输入如下命令:

    • ssh localhost


    首次登陆出现如下提示(图中为使用root用户登录,hadoop用户同理),输入yes即可,在用户的主文件夹(/home/用户名)下会生成.ssh目录。然后根据提示输入hadoop用户密码,登陆本机:

          


    我们发现每一次使用ssh登录都需要输入密码,为方便起见,配置ssh为免密码登录:

    (1)切换为hadoop用户;

    (2)利用ssh-keygen生成密钥,并将密钥加入到授权中,修改授权文件权限:

    • cd ~/.ssh/

    • ssh-keygen -t rsa

    • cat id_rsa.pub >>authorized_keys

    • chmod 600 ./authorized_keys


     此时,使用ssh localhost无需密码便可登陆。

    3、安装Java环境

    Java环境可以选择Oracle的JDK,或者OpenJDK。按照https://wiki.apache.org/hadoop/HadoopJavaVersions中所说,hadoop 2.7版本及以后的版本至少要求Java 7。CentOS 7.3下默认安装了OpenJDK 1.8,但只是Java JRE,不是JDK,为便于开发,建议安装JDK。

    建议使用yum进行安装,默认安装路径为/usr/lib/jvm/java-1.8.0-openjdk:

            


    安装成功后配置JAVA_HOME环境变量:

    • vim ~/.bashrc


    在最后一行添加变量:

            


    使环境变量生效:

    • source ~/.bashrc


    设置好后检验一下是否正确,输出一下内容则设置正确:

            

    安装Hadoop

    通过http://www.apache.org/dyn/closer.cgi/hadoop/common/下载Hadoop,这里选择了Hadoop 2.7.3版本,下载时选择hadoop-2.7.3.tar.gz格式,其中src格式的为Hadoop的源代码,需要进行编译后才可使用。

         安装Hadoop至/usr/local/中(也可选择别的路径),Hadoop解压后即可使用:

    • sudo tar -zxf ~/Download/hadoop-2.7.3.tar.gz -C /usr/local

    • cd /usr/local/

    • sudo mv ./hadoop-2.7.3/ ./hadoop 

    • sudo chown -R hadoop:hadoop ./hadoop

         检查Hadoop是否可用:

    • cd /usr/local/hadoop

    • ./bin/hadoop version

    说明:若未进行Java的环境变量配置,想要./bin/hadoop执行成功,则需要修改hadoop的etc/hadoop/hadoop-env.sh文件中的JAVA_HOME变量,指定为java路径,如图:

            

    至此,Hadoop默认模式即本地模式(单机模式)已经配置成功。

    Hadoop伪分布式配置

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

    伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml,配置文件位于hadoop的/etc/hadoop文件夹下。

    修改core-site.xml为:

            


     修改hdfs-site.xml为:

            


     修改配置文件成功后,通过ssh登陆:

            


     执行NameNode的格式化:

            


    出现如图情况,表示成功,若“Exitting with status 1”则是出错:

            



     接下去开启NameNode和DataNode守护进程:

            


    若出现SSH的提示,输入yes即可:

            


    启动完成后,通过jsp来判断是否成功启动,若成功启动则会列出如下进程,如果没有NameNode或DataNode,则表明配置不成功,需要检查上述步骤或通过启动日志排查,日志记录在hadoop的logs文件夹中:

            


    成功启动后,可以访问http://localhost:50070来查看NameNode和Datanode信息及HDFS中文件:

            


    运行Hadoop伪分布式实例

    单机模式grep读取的是本地数据,伪分布式读取的则是Hdfs上的数据。

     执行MR任务需要在Hdfs上创建用户目录,这里<username>为hadoop:

            


    在Hdfs上创建input文件夹作为输入内容存放的文件目录,将hadoop中etc/hadoop文件夹中的文件复制到Hdfs中:

            


    运行grep任务,伪分布式的MR任务运行方式与单机模式相同,区别在于伪分布式读取的是HDFS中的文件,单机模式是读取本地文件:

            


    查看运行结果,即Hdfs中output结果:


            

            


            Hadoop运行程序时,输出目录不能存在,若要再次执行作业,则需要先删除输出文件夹:

    • ./bin/hdfs dfs -rm -r output

            关闭进程:

            


    注意:下次启动Hadoop时,则无需再次进行NameNode的初始化,只需要运行./sbin/start-dfs.sh即可。

    启动YARN

    YARN(Yet Another Resource Negotiator)是新的MapReduce框架,从MapReduce中分离出来,负责资源管理与任务调度。YARN运行于MapReduce之上,提供了高可用性、高扩展性。上述的启动Hadoop仅仅是启动了MapReduce的环境。

    启动YARN来进行资源管理和任务调度需要修改几个配置:

     修改配置mapred-site.xml,首先将etc/hadoop/mapred-site.xml.template重名,然后修改配置:


             


    修改yarn-site.xml配置:

            


         配置完成后可以启动YARN,通过执行hadoop中./sbin/start-yarn.sh脚本来启动(执行前先执行./sbin/start-dfs.sh):

            


    启动后通过jps查看,可以看到多了NodeManager和ResourceManager两个后台进行,如图:

            


    开启历史服务器,便于在Web中查看任务运行情况:

         


    启动YARN后,运行实例方法与上述一样。观察日志信息可以发现,不启动YARN时,是“mapred.LocalJobRunner”在跑任务,启用YARN之后,是“mapred.YARNRunner”在跑任务。启动YARN可以通过Web界面查看任务的运行情况:http://localhost:8088/cluster,如图:


         

         


    关闭YARN和历史服务器:

     


    注意:若不想启动YARN,需要将mapred-site.xml重命名,改回mapred-site.xml.template.

    Hadoop环境变量配置

    上述内容中,我们都是通过先进入到/usr/local/hadoop目录中,再执行./sbin/[执行脚本]或./bin/[执行脚本],为便于平时的操作方便,我们可以配置Path环境变量来简化我们的操作,配置如下,完成后便可直接执行hadoop中./sbin和./bin目录下的脚本:

     


    网易云免费体验馆,0成本体验20+款云产品! 

    更多网易技术、产品、运营经验分享请点击

    相关文章:
    【推荐】 6本互联网技术畅销书免费送(数据分析、深度学习、编程语言)!

  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/163yun/p/9874810.html
Copyright © 2011-2022 走看看