Linux环境Hadoop安装配置

881 阅读2分钟

Linux环境Hadoop安装配置

1. 准备工作

(1)linux配置IP(NAT模式)

  • 相关信息必须与VMnet8保持一致

  • 通过命令:vi /etc/sysconfig/network-scripts/ifcfg-(自己的名字) 进行编辑

    TYPE=Ethernet
    BOOTPROTO=none
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=9cbcf25a-600d-4d9c-88ad-ab509ab6e52a
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=192.168.44.121
    PREFIX=24
    GATEWAY=192.168.44.2
    DNS1=8.8.8.8

    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_PRIVACY=no

  • 重启网络服务:service network restart

(2)linux关闭防火墙

  • 查看防火墙状态:firewall-cmd --state ->running
  • 关闭防火墙-本次有效:systemctl stop firewalld.service
  • 禁用防火墙-永久生效:systemctl disable firewalld.service ->not running

(3)设置主机名

  • 位置:vi /etc/hostname,输入主机名
  • **注意:**需要重启:reboot

(4)设置映射

  • 位置:vi /etc/hosts,输入集群全部IP和主机名
  • 格式:192.168.44.111 bigdata111

(5)设置免密登录:

  • 生成密钥:ssh-keygen (三次回车键)
  • 拷贝到主机:ssh-copy-id 主机名 (所有节点都拷贝)

2. 安装jdk

(1)上传安装包:

  • CRT:alt+p
  • winscp:拖入目录

(2)解压:

  • tar -zxvf jdkXXXXX.tar.gz -C 目标目录

(3)配置环境变量:

  • 命令:
    • export JAVA_HOME=jdk目标目录
    • export PATH=$PATH:$JAVA_HOME/bin
  • **注意:**需要使环境变量生效:source ~/.bashrc

建议路径

  • 保持CDH环境配套,建议Java部署在/usr/java/

3. 分发jdk到其他节点

(1)发送文件:

  • scp jdk 目标主机名:目标目录
  • scp ~/.bashrc 目标主机名:目标目录
  • source ~/.bashrc

(2)验证:

  • javac java java -version

4. 安装hadoop

(1)上传安装包:

  • CRT:alt+p
  • winscp:拖入目录

(2)解压:

  • tar -zxvf HadoopXXXXX.tar.gz -C 目标目录

(3)配置环境变量:

  • 命令:vi ~/.bashrc
    • export HADOOP_HOME=HADOOP目标目录
    • export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • **注意:**需要使环境变量生效:source ~/.bashrc

(4)修改配置文件:

  • hadoop-env.sh

    export JAVA_HOME=Java路径

  • core-site.xml

      <!-- 指定HDFS中NameNode的地址 -->
      <property>
              <name>fs.defaultFS</name>
              <value>hdfs://bigdata121:9000</value>
      </property>
    
      <!-- 指定hadoop运行时产生文件的存储目录 -->
      <property>
              <name>hadoop.tmp.dir</name>
              <value>/opt/module/hadoop-2.7.3/tmp</value>
      </property>
    
      <!-- 回收站设置,保存时间7天  -->
      <property>
              <name>fs.trash.interval</name>
              <value>10080</value>
      </property>
    
  • hdfs-site.xml

		<!-- 指定HDFS副本的数量,数据块冗余度(默认为3) -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>

		<!-- 指定hadoop产生namenode、datanode文件的存储目录 -->
<!-- 	<property>
			<name>dfs.namenode.name.dir</name>
			<value>/opt/module/hadoop-2.7.3/tmp/name</value>
		</property>
		<property>
			<name>dfs.datanode.data.dir</name>
			<value>/opt/module/hadoop-2.7.3/tmp/data</value>
		</property>         -->   

        <!--注释配置HDFS的权限检查,默认是true-->
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>

        <!-- hdfs副本的配置bigdata122 -->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>bigdata122:50090</value>
        </property>

        <!-- 配置checkpoint时间 -->
        <property>
            <name>dfs.namenode.checkpoint.period</name>
            <value>3600</value>
		</property>

datanode:

       <!-- 控制数据平衡操作的带宽大小 50M -->
       <property>
           <name>dfs.datanode.balance.bandwidthPerSec</name>
           <value>52428800</value>
   	</property>
       
       <!-- 多盘挂载 -->
       <property>
           <name>dfs.datanode.data.dir </name>
           <value>/data01/dfs/dn,/data02/dfs/dn,/data03/dfs/dn</value>
       </property>
       
       <!-- 启用多盘平衡 Apache hadoop3.x默认启用 CDH hadoop2.x需要下面设置 -->
       <property>
           <name>dfs.disk.balancer.enabled</name>
           <value>true</value>
       </property>
  • mapred-site.xml(默认没有) $ cp mapred-site.xml.template mapred-site.xml mapreduce.framework.name yarn

  • yarn-site.xml

      <!--配置Yarn的ResourceManager的地址-->
      <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>bigdata121</value>
      </property>
      <property>  
      	<name>yarn.resourcemanager.address</name>  
      	<value>bigdata121:8032</value>  
      </property>  
      <property>  
      	<name>yarn.resourcemanager.scheduler.address</name>  
      	<value>bigdata121:8030</value>  
      </property>  
      <property>  
      	<name>yarn.resourcemanager.resource-tracker.address</name>  
      	<value>bigdata121:8031</value>  
      </property>
    
      <!--NodeManager执行MR任务的方式是Shuffle洗牌-->
      <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</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>
    

(5)修改slaves文件:

  • 加入从节点的主机名

(6)格式化namenode

  • hadoop namenode -format

(7)启动:

  • start-all.sh

重复格式化:hadoop.tmp.dir

  • 停止集群
  • 删除原来的tmp文件。(rm -rf)
  • 重新格式化
  • 启动集群

部署Hadoop伪分布式:

  • 创建用户:useradd XXX

  • 切换用户:su XXX

  • 创建用户文件夹:mkdir app software sourcecode log data tmp lib

  • 增加权限:(root下)chown -R XXX:XXX /home/XXX/software/*

  • 解压:tar -xzvf hadoopXX.tar.gz -C ~/app/

  • 软连接(方便后续版本切换):ln -s hadoopXX hadoop

  • 环境变量:vi ~/.bashrc

    • export HADOOP_HOME=/home/XXX/app/hadoop
      export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
      
  • 信任关系:

    • ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      chmod 0600 ~/.ssh/authorized_keys
      
  • 验证信任关系:

    • ssh 用户@主机名 date
    • 直接返回时间说明成功
  • 配置文件及 NN SNN DN RM NM都以bigdata121启动

    • vi hadoop-env.sh
    • # hadoop 2.x 这里必须修改,3.x修复
      export JAVA_HOME=本地JDK路径
      export HADOOP_PID_DIR=/home/XXX/tmp
      
    • vi core-site.xml
    • <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://bigdata121:9000</value>
          </property>
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/home/XXX/tmp</value>
          </property>
          <property>
              <name>fs.trash.interval</name>
              <value>10080</value>
          </property>
      </configuration>
      
    • vi hdfs-site.xml
    • <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
      
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>bigdata121:50090</value>
          </property>
      
          <property>
              <name>dfs.namenode.secondary.https-address</name>
              <value>bigdata121:50091</value>
          </property>
      </configuration>
      
    • vi slaves
      • bigdata121
    • vi mapred-site.xml
    • <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
          <property>
              <name>mapreduce.input.fileinputformat.input.dir.recursive</name>
              <value>true</value>
          </property>
      
          <property>
              <name>mapreduce.output.fileoutputformat.compress</name>
              <value>true</value>
          </property>
      
          <property>
              <name>mapreduce.output.fileoutputformat.compress.codec</name>
              <value>org.apache.hadoop.io.compress.BZip2Codec</Value>
          </property>
      
          <property>
              <name>mapreduce.jobhistory.address</name>
              <value>bigdata01:10020</value>
              <description>MapReduce JobHistory server IPC host:port</description>
          </property>
      </configuration>
      
    • vi yarn-site.xml
    • <?xml version="1.0"?>
      <configuration>
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
          <property>
              <name>yarn.resourcemanager.webapp.address</name>
              <value>${yarn.resourcemanager.hostname}:18088</value>
          </property>
      </configuration>
      
  • 格式化

    • bin/hdfs namenode -format
  • 启动

    • sbin/start-all.sh

Map Tasks和Reduce Tasks个数规则

  • MapReduce作业中的Map Task数目:
    • (1)输入文件的个数与大小
    • (2)hadoop设置split与block的关系来决定。
  • Reduce Task数目是由mapred.reduce.tasks指定,如果不指定则默认为1。

Hadoop集群结构