zoukankan      html  css  js  c++  java
  • CentOS 7_64位系统下搭建Hadoop_2.8.0分布式环境

    准备条件:

    CentOS 7 64位操作系统 | 选择minimal版本即可(不带可视化桌面环境),也可以选择带完整版
    Hadoop-2.8.0 | 本文采用的是Hadoop-2.8.0版本。
    JDK1.8 | 本文采用jdk-8u131-linux-x64.tar.gz版本。


    - 解压并配置JDK并配置Hadoop

    1. 将下载好的jdk放入/usr 下并在/usr目录下新建java目录

    [root@localhost /]# cd /usr
    [root@localhost usr]# mkdir java
    [root@localhost usr]# cd /usr/java/jdk1.8
    

    进入该目录,并解压jdk到当前文件夹

    tar -xzvf jdk-8.tar.gz

    解压得到文件夹修改文件夹名为jdk1.8以方便使用。 
    修改JAVA环境变量:
    编辑java环境 vi ~/.bash_profile
    添加如下命令:

    export JAVA_HOME=/usr/java/jdk1.8.0_121
    
    export PATH=$JAVA_HOME/bin:$PATH
    

    执行source ~/.bash_profile 使变量生效
    

    2. 解压hadoop-2.8.0
    将下载好的Hadoop压缩包解压到目标文件夹下,(本文解压目录为:/usr/local
    修改解压后得到Hadoop的文件夹名为:Hadoop-2.8.0 并得到如下文件:

    Hadoop不需要安装,下面进行环境配置

    
    下面的修改过程可使用vi命令,或者vim命令,或使用xftp直接对文件进行修改
    
    
    • 再次修改bash_profile 添加hadoop的文件路径:
      加上之前修改的配置的jdk环境,改该文件整体修改为:

    PATH=$PATH:$HOME/bin
    export PATH
    export JAVA_HOME=/usr/java/jdk1.8
    export HADOOP_HOME=/usr/local/hadoop-2.8.0
    export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin
    

    再次执行 source ~/.bash_profile 使得文件立即生效

    • 修改etc/hadoop/core-site.xml将configurarion标签修改为:
      注意: 192.168.0.181是本文的测试地址,相应的,需要修改成自己虚拟机的ip地址,如果虚拟机不是桥接方式,则可以改为:127.0.0.1 9000是Hadoop的默认端口,建议先不要修改

            <configuration>
                 <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://192.168.0.181:9000</value>
                </property>
                <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/usr/local/hadoop-2.8.0/tmp</value>
                </property>
                <property>
                    <name>io.file.buffer.size</name>
                    <value>131702</value>
                </property>
                <property>
                    <name>hadoop.proxyuser.hadoop.hosts</name>
                    <value>*</value>
                </property>
                <property>
                    <name>hadoop.proxyuser.hadoop.groups</name>
                    <value>*</value>
                </property>
            </configuration>
    
    • 修改etc/hadoop/hdfs-site.xml

         <configuration>
             <property>
                 <name>dfs.namenode.name.dir</name>
                 <value>file:/usr/local/hadoop-2.8.0/hdfs/name</value>
             </property>
             <property>
                 <name>dfs.datanode.data.dir</name>
                 <value>file:/usr/local/hadoop-2.8.0/hdfs/data</value>
             </property>
             <property>
                 <name>dfs.replication</name>
                 <value>3</value>
             </property>
             <property>
                 <name>dfs.namenode.secondary.http-address</name>
                 <value>192.168.0.181:9001</value>
             </property>
             <property>
                 <name>dfs.webhdfs.enabled</name>
                 <value>true</value>
             </property>
              <property>
                 <name>dfs.permissions</name>
                 <value>false</value>
               </property>  
         </configuration>

      以上,分别配置的是相应的几个节点和安全认证,文件目录会在服务开启时自动创建

    dfs.permissions设置为false可以允许完全分布式模式下的多机访问
    
    • 修改etc/hadoop/yarn-site.xml

         <configuration>
         
         <!-- Site specific YARN configuration properties -->
             <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
             </property>
             <property>
                 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
                 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
             </property>
             <property>
                 <name>yarn.resourcemanager.address</name>
                 <value>192.168.0.181:8032</value>
             </property>
             <property>
                 <name>yarn.resourcemanager.scheduler.address</name>
                 <value>192.168.0.181:8030</value>
             </property>
             <property>
                 <name>yarn.resourcemanager.resource-tracker.address</name>
                 <value>192.168.0.181:8031</value>
             </property>
             <property>
                 <name>yarn.resourcemanager.admin.address</name>
                 <value>192.168.0.181:8033</value>
             </property>
             <property>
                 <name>yarn.resourcemanager.webapp.address</name>
                 <value>192.168.0.181:8088</value>
             </property>
             <property>
                 <name>yarn.nodemanager.resource.memory-mb</name>
                 <value>6078</value>
             </property>
         </configuration>
      
    • 修改etc/hadoop/hadoop-env.sh

      # The java implementation to use.

      export JAVA_HOME=/usr/java/jdk1.8

         以上修改JAVA_HOME为绝对路径
         

    • 修改 etc/hadoop/mapred-site.xml
      注意: etc/hadoop/目录下并没有这个xml文件,仔细查找,有个mapred-site.xml.template把这个文件复制,重命名为mapred-site.xml并修改为:

                <configuration>
                    <property>
                        <name>mapreduce.framework.name</name>
                        <value>yarn</value>
                    </property>
                    <property>
                        <name>mapreduce.jobhistory.address</name>
                        <value>192.168.0.181:10020</value>
                    </property>
                    <property>
                        <name>mapreduce.jobhistory.webapp.address</name>
                        <value>192.168.0.181:19888</value>
                    </property>
                </configuration>
    
    • 修改 etc/hadoop/yarn-env.sh
      在其中找到 export JAVA_HOME 并去掉注释,编辑java地址 export JAVA_HOME=/usr/java/jdk1.8

    • 修改etc/hadoop/slaves
      添加当前主机ip

    至此,基本配置已经完毕

    3. 列表项目

    hadoop目录下执行如下指令,进行编译

     ./bin/hdfs namenode –format
    


    出现如上图,表示编译成功。

    4. 关闭防火墙:
    关闭防火墙服务systemctl stop firewalld.service 
    使防火墙服务不随机器启动systemctl disable firewalld.service
    开启Hadoop服务

    ./sbin/start-all.sh
    


    输入jps查看相关节点是否开启
    打开浏览器:地址栏输入http://192.168.0.181:8088

    使用过程中遇到的问题:

    • 问题一:nameNode节点无法启动,jps目录缺少相应活动程序
      在第一次格式化dfs后启动并使用了Hadoop,后来又重新执行了格式化命令hdfs namenode –format
      这时namenodeclusterID会重新生成,而datanodeclusterID 保持不变。
      从而导致两者的id不一致,出现一系列错误。
      解决办法:
      hadoop/hdfs目录下分别查看data/current下的VERSIONname/current下的VERSION文件对比两文件中的clusterID是否相同,若不同,使用name/current下的VERSION中的clusterID覆盖data/current下的clusterID. 修改后重新启动Hadoop即可

    • 问题二:如何配置单机互信?
      每次启动和关闭Hadoop的时候,都需要频繁输入多次密码,通过配置单机互信或者多机互信来简化操作:
      解决办法:
      使用指令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
      随后:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
      并执行:chmod 600 .ssh/authorized_keys
      即可。

    • 问题三:在完全分布式模式下运行失败,无法登陆或没有访问权限
      解决办法:
      修改etc/hadoop/hdfs-site.xml
      添加

      <property>
            <name>dfs.permissions</name>
            <value>false</value>
      </property> 

    ---------------------------------------------------------------------------------------------------------------


    //系统环境的java+hadoop路径配置
    vi /etc/profile
    source /etc/profile

    //当前目录环境的java+hadoop路径配置
    vi ~/.bash_profile
    source ~/.bash_profile

    //关闭防火墙服务
    systemctl stop firewalld.service

    //使防火墙服务不随机器启动
    systemctl disable firewalld.service

    //数据格式化
    ./bin/hdfs namenode -format

    //启动hadoop系统
    ./sbin/start-all.sh

    //关闭hadoop系统
    ./sbin/stop-all.sh

  • 相关阅读:
    TCP心跳包
    interesting site
    TestNG环境搭建以及框架初识
    lambda表达式
    subprocess学习
    使用psutil模块获取电脑运行信息
    使用ssh和putty操控远程的linux server
    ubuntu系统源的更新
    将python的程序包装成windows下的service
    使用python进行re拆分网页内容
  • 原文地址:https://www.cnblogs.com/csguo/p/7302534.html
Copyright © 2011-2022 走看看