Hadoop学习笔记:二、Hadoop环境安装配置

1,040 阅读6分钟

目标

  • 掌握VMware安装Centos7系统
  • 掌握Hadoop集群搭建
  • 掌握相关软件的安装
  • 知道常见问题的处理

1 VMware安装CentOS7

1.1 安装VMware15

关注公众号:EZ大数据,回复VM获取VMware15安装包及激活密钥

  • 扩展:Bridged、NAT、Host-only的区别
    • Bridged(桥接模式):适用于办公、局域网环境,生产环境常用。局域网中的一台独立主机,可以访问网内任何一台机器,不过需要自己商铺欧东配置IP地址等。
    • NAT(网络地址转换模式):适用于家庭环境(没有路由器)。可以实现在虚拟系统里访问互联网,由宿主机直接进行转换进行联网,位于虚拟机的VMnet8子网内。
    • Host-only(独立主机模式):不能联网,只能和宿主机联网,位于虚拟机的VMnet1子网内。

1.2 Centos7安装

  • 安装系统

    参考:blog.51cto.com/13880683/21…

  • 设置静态IP

    重启网络:service network restart

    路径:/etc/sysconfig/network-scripts/路径下的ifcfg-ens33文件

    重点信息,如下:

    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.xxx.200
    NETMASK=255.255.255.0
    GATEWAY=192.168.xxx.2
    DNS1=114.114.114.114
    DNS2=8.8.8.8
    
  • 关闭防火墙

    firewall-cmd --state,查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    systemctl stop firewalld.service,停止firewall
    systemctl disable firewalld.service,禁止firewall开机启动
    
  • 设置共享文件夹(推荐FTP上传,更EZ)

    参考:www.cnblogs.com/skyheaving/…

  • 网络异常问题

    Failed to start LSB: Bring up/down networking.
    
    # 解决方案:禁用NetworkManager
    systemctl stop NetworkManager
    systemctl disable NetworkManager
    

2 Hadoop集群搭建(完全分布式)

Hadoop运行模式:本地模式、伪分布式模式、完全分布式模式。

注:本文主要说完全分布式的安装,以下配置,需要在VMware中配置三台机器:master、slave1、slave2,需要关闭防火墙、设置静态IP、修改主机名字。

相应的硬件配置(内存、硬盘容量)自己根据机器情况来设定。

2.1 Hadoop2.7.7安装

官方文档:hadoop.apache.org/docs/r2.7.7…

版本下载:archive.apache.org/dist/hadoop…

安装参考:www.cnblogs.com/thousfeet/p…

  • 卸载系统自带Java

    java -verison
    rpm -qa | grep jdk
    除.noarch,其余全部删除  rpm -e --nodeps XXX
    
  • 修改hostname

    # 修改主机名
    hostnamectl set-hostname xxx
    
    # 设置master和slave1,slave2关系
    # 添加salve1,slave2的ip和hostname
    vim /etc/hosts
    
  • 添加环境变量

    # 对当前用户生效
    vim ~/.bash_profile
    
    # 对所有用户生效
    vim /etc/profile
    
    # 执行生效命令
    source ~/.bash_profile
    or
    source /etc/profile 
    
  • 免密登录

    免密登录原理如下:

    image-20210305154400242
    1. 创建公钥/私钥
    ssh-keygen -t rsa	# 然后yes一路回车即可
    
    1. 创建authorized_keys文件并修改权限为600
    cd .ssh
    touch authorized_keys
    chmod 600 authorized_keys
    
    1. 将公钥追加到authorized_keys文件中去
    # 分别master、slave1、slave2的公钥都追加到authorized_keyscat id_rsa.pub >> authorized_keys# 测试登录ssh master/slave1/slave2
    
  • 重要目录

    • bin:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
    • etc:Hadoop的配置文件目录,存放Hadoop的配置文件
    • lib:存放Hadoop的本地库(对数据进行压缩解压缩功能)
    • sbin:存放启动或停止Hadoop相关服务的脚本
    • share:存放Hadoop的依赖jar包、文档和官方案例

2.2 配置Hadoop

  • 修改配置

    1. 修改core-site.xml配置tmp目录

      <configuration>        
          <property>               
              <name>fs.defaultFS</name>             
              <value>hdfs://master:9000</value>            
              <description>HDFS的URI,文件系统://namenode标识:端口号</description>       
          </property>        
          <property>                
              <name>hadoop.tmp.dir</name>              
              <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/tmp</value>        
              <description>namenode上本地的hadoop临时文件夹</description>       
          </property>        
          <property>                
              <name>hadoop.proxyuser.root.hosts</name>                
              <value>*</value>        
          </property>        
          <property>                
              <name>hadoop.proxyuser.root.groups</name>               
              <value>*</value>       
          </property>
      </configuration>
      
    2. 修改hadoop-env.sh配置JAVA_HOME

      export JAVA_HOME=/home/amos/SoftWare/jdk1.8.0_251
      
    3. 修改hdfs-site.xml配置dfs/name,dfs/data

      <configuration>         
          <property>          
              <name>dfs.namenode.secondary.http-address</name>   
              <value>master:9001</value>        
          </property>        
          <property>          
              <name>dfs.namenode.name.dir</name>          
              <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/name</value>    
              <description>namenode上存储hdfs名字空间元数据 </description>        
          </property>        
          <property>          
              <name>dfs.datanode.data.dir</name>          
              <value>/home/amos/SoftWare/hadoop-2.7.7/hdfs/data</value>    
              <description>datanode上数据块的物理存储位置</description>        
          </property>        
          <property>          
              <name>dfs.replication</name>          
              <value>3</value>          
              <description>副本个数,配置默认是3,应小于datanode机器数量</description>    
          </property>
      </configuration>
      
    4. 修改mapred-site.xml配置yarn名称

      <configuration>        
          <property>                
              <name>mapreduce.framework.name</name>                
              <value>yarn</value>                
              <description>指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方</description> 
          </property>        
          <!--hadoop历史服务器-->        
          <property>                
              <name>mapreduce.jobhistory.address</name>         
              <value>master:10020</value>               
              <description>MR JobHistory Server管理的日志的存放位置</description>     
          </property>        
          <property>                
              <name>mapreduce.jobhistory.webapp.address</name>   
              <value>master:19888</value>               
              <description>查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行</description>       
          </property>        
          <property>                
              <name>mapreduce.jobhistory.done-dir</name>                
              <value>/mr-history/done</value>                
              <description>MR JobHistory Server管理的日志的存放位置,默认:/mr-history/done</description>        
          </property>        
          <property>                
              <name>mapreduce.jobhistory.intermediate-done-dir</name>                
              <value>/mr-history/tmp</value>                
              <description>MapReduce作业产生的日志存放位置,默认值:/mr-history/tmp</description>   
          </property>        
          <property>                
              <name>yarn.app.mapreduce.am.staging-dir</name>               
              <value>/mr-history/hadoop-yarn/</value>                
              <description>指定applicationID以及需要的jar包文件等</description>        
          </property>        
          <property>                
              <name>mapreduce.map.memory.mb</name>                
              <value>2048</value>                
              <description>每个Map任务的物理内存限制</description>        
          </property>        
          <property>                
              <name>mapreduce.reduce.memory.mb</name>                
              <value>2048</value>                
              <description>每个Reduce任务的物理内存限制</description>        
          </property>
      </configuration>
      
    5. 修改slaves文件配置从节点

      slave1slave2
      
    6. 修改yarn-site.xml文件配置RM端口等

      <configuration><!--打开HDFS上日志记录功能-->        
          <property>             
              <name>yarn.log-aggregation-enable</name>             
              <value>true</value>        
          </property>        
          <property>            
              <name>yarn.nodemanager.aux-services</name>      
              <value>mapreduce_shuffle</value>        
          </property>        
          <property>             
              <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>    
              <value>org.apache.hadoop.mapred.ShuffleHandler</value>       
          </property>        
          <property>            
              <name>yarn.resourcemanager.address</name>            
              <value>master:8032</value>        
          </property>        
          <property>            
              <name>yarn.resourcemanager.scheduler.address</name>  
              <value>master:8030</value>        
          </property>        
          <property>            
              <name>yarn.resourcemanager.resource-tracker.address</name>      
              <value>master:8031</value>        
          </property>        
          <property>           
              <name>yarn.resourcemanager.resource-tracker.address</name>         
              <value>master:8035</value>        
          </property>       
          <property>            
              <name>yarn.resourcemanager.admin.address</name>       
              <value>master:8033</value>        
          </property>        
          <property>            
              <name>yarn.resourcemanager.webapp.address</name>     
              <value>master:8088</value>        
          </property>        
          <property>            
              <name>yarn.nodemanager.pmem-check-enabled</name>            
              <value>false</value>        
          </property>        
          <property>            
              <name>yarn.nodemanager.vmem-check-enabled</name>            
              <value>false</value>        
          </property>        
          <property>            
              <name>yarn.log-aggregation.retain-seconds</name>            
              <value>86400</value>        
          </property>
      </configuration>
      
  • 远程拷贝

    • scp:安全拷贝

    注:拷贝到slave1、slave2上的文件,需要修改相关文件,如:source ~/.bash_profile

    远程拷贝到slave1、slave2(前提是hostname已经设置为slave1和slave2)scp -r hadoop-2.7.7/ root@192.168.60.110:/home/amos/SoftWare
    
    • rsync:远程同步工具

    rsync与scp区别:rsync做文件的复制要比scp速度快,另外rsync只对差异文件做更新,scp是把所有文件都复制过去。

    rsync -rvl ./yarn-site.xml root@slave1:/home/amos/test
    
  • 格式化&启动

    重点:只在第一次启动时格式化NameNode,因为格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。所以,在后期格式化NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。

    • master节点上格式化

      bin/hadoop namenode -format
      
    • 启动集群

      注意:NameNode和ResourceManger如果不是同一台机器,不能再NameNode上启动Yarn,应该在ResourceManger所在的机器上启动Yarn。

        sbin/start-all.sh    # jps查看 若有如下则成功  # jps是JDK中的命令,不是Linux命令。  4464 ResourceManager  4305 SecondaryNameNode  4972 Jps  4094 NameNode
      
    • jps查看

      # master节点:16747 Jps16124 NameNode16493 ResourceManager16334 SecondaryNameNode# slave1节点:10485 DataNode10729 Jps10605 NodeManager# slave2节点:10521 NodeManager10653 Jps10399 DataNode
      

2.3 疑难解决

  • process information unavailable

    普通用户启动了对应的程序后,root 用户执行了kill 命令,导致进程出现了这种状态。也就是不同账号之间kill进程时,可能会造成这种现象。用户启动了一个java进程,但是用root用户去kill,虽然杀掉了,但是查看进程时偶尔就会出现)

    ll /tmp/|grep hsperfdata  rm -rf /tmp/hsperfdata* 
    
  • 关闭安全模式

    hdfs dfsadmin -safemode leave
    

3 总结

万事开头难,我一直都认为任何项目开发,最初的安装配置是最最麻烦的。

本篇文章主要总结VMware安装CentOS7以及Hadoop的安装配置,回想当初我自己摸索,期间遇到各种各样的坑,然后花了快两天掉了N多根头发才彻底搞定。说起来,本文所讲的安装方面的坑还只是一部分,有些很容易百度的就没必要在这里阐述。

发现问题,总结思考,然后尝试自己解决问题,进步才会明显。

好了,今天就到这里,拜了个拜~