• 二、Hadoop搭建


    一、Liunx环境准备

    VMware+CentOS-7.6,

    systemctl stop firewalld	关闭防火墙
    systemctl disable firewalld	禁止开机启动
    systemctl status firewalld	查看防火墙状态
    
    • 1.4设置静态IP(并配置虚拟网络环境)
      修改配置文件
    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
    

    改成以下模板

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static  # 修改
    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=79acf3f7-0d64-4244-b531-daffc9c8e771
    DEVICE=ens33
    ONBOOT=yes  # 修改
    # 新增
    IPADDR=192.168.244.101
    NETMASK=255.255.255.0
    GATEWAY=192.168.244.2
    DNS1=114.114.114.114
    DNS2=8.8.8.8
    

    重启网络服务

    [root@localhost ~]# service network restart
    
    • 1.5 安装常用工具
    vim	编辑工具		yum -y install vim*
    wget 云端下载		yum -y install wget
    
    • 1.6 修改主机名
      查看主机名
    [root@localhost ~]# echo $HOSTNAME
    

    修改主机名

    [root@localhost ~]# vim /etc/sysconfig/network
    增加以下内容,以后只需要更改 HOSTNAME 那一行
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=hdp-101	
    注意:主机名称中不能有“_”下划线
    

    增加ip和主机的映射关系

    [root@localhost ~]# vim /etc/hosts
    增加以下内容
    192.168.244.101 hdp-101
    

    重启虚拟机(命令:reboot),主机名生效

    测试 ping hdp-101
    ping 通代表修改成功
    
    • 1.7在/opt目录下创建两个文件夹module和software
    [root@hdp-101 ~]# mkdir /opt/module /opt/sofaware
    

    到此基础配置已完成

    二、Hadoop运行环境搭建

    • 2.1安装jdk、Hadoop
      进入到 /opt/sofaware/目录下
    [root@hdp-101 ~]$ cd /opt/sofaware/
    [root@hdp-101 sofaware]$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
    [root@hdp-101 sofaware]$ wget http://mirrors.hust.edu.cn/apache/hadoop/core/hadoop-2.7.7/hadoop-2.7.7.tar.gz
    [root@hdp-101 sofaware]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
    [root@hdp-101 sofaware]$ tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module/
    [root@hdp-101 sofaware]$ cd /opt/moude/
    修改jdk的名字
    [root@hdp-101 moude]mv jdk-8u141-linux-x64 jdk1.8.0_141
    

    配置环境变量

    [root@hdp-101 sofaware]$ sudo vi /etc/profile
    在文件末尾添加jdk路径和hadoop路径
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_141
    export PATH=$PATH:$JAVA_HOME/bin
    
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-2.7.7
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    保存、退出,让修改后的文件生效
    [root@hdp-101 sofaware]$ source /etc/profile
    测试环境变量是否配置成功
    [root@hdp-101 sofaware]$ java -version
    java version "1.8.0_141"
    
    [root@hdp-101 sofaware]$ hadoop version
    Hadoop 2.7.7
    
    • 2.2Hadoop目录结构
      查看Hadoop目录结构
    [root@hdp-101 ~]$ cd /opt/module/hadoop-2.7.7
    [root@hdp-101 hadoop-2.7.7]$ ll
    总用量 52
    drwxr-xr-x. 2 root root  4096 5月  22 2017 bin
    drwxr-xr-x. 3 root root  4096 5月  22 2017 etc
    drwxr-xr-x. 2 root root  4096 5月  22 2017 include
    drwxr-xr-x. 3 root root  4096 5月  22 2017 lib
    drwxr-xr-x. 2 root root  4096 5月  22 2017 libexec
    -rw-r--r--. 1 root root  15429 5月  22 2017 LICENSE.txt
    -rw-r--r--. 1 root root   101 5月  22 2017 NOTICE.txt
    -rw-r--r--. 1 root root  1366 5月  22 2017 README.txt
    drwxr-xr-x. 2 root root  4096 5月  22 2017 sbin
    drwxr-xr-x. 4 root root  4096 5月  22 2017 share
    

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

    三、Hadoop运行模式

    • 3.1开始配置Hadoop
    [root@hdp-102 hadoop-2.7.7]$ cd etc/hadoop/
    配置:hadoop-env.sh
    修改JAVA_HOME 路径:
    export JAVA_HOME=/opt/module/jdk1.8.0_141
    

    配置core_site.xml

    <!-- 指定HDFS中NameNode的地址 -->
    <property>
    <name>fs.defaultFS</name>
        <value>hdfs://hdp-101:9000</value>
    </property>
    
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/opt/module/hadoop-2.7.7/data/tmp</value>
    </property>
    

    配置hdfs-site.xml

    <!-- 指定HDFS副本的数量 单一节点至多设置一个副本-->
    <property>
    	<name>dfs.replication</name>
    	<value>1</value>
    </property>
    
    • 3.2启动Hadoop
      格式化NameNode(第一次启动时格式化,以后就不要总格式化)
    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs namenode -format
    

    启动NameNode

    [root@hdp-101 hadoop-2.7.7]$ sbin/hadoop-daemon.sh start namenode
    

    启动DataNode

    [root@hdp-101 hadoop-2.7.7]$ sbin/hadoop-daemon.sh start datanode
    
    • 3.3查看是否启动成功
    [root@hdp-101 hadoop-2.7.7]$jps
    13586 NameNode
    13668 DataNode
    13786 Jps
    注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps
    

    web端查看HDFS文件系统
    http://hdp-101:50070/dfshealth.html#tab-overview

    为什么不能一直格式化NameNode,格式化NameNode,要注意什么

    [root@hdp-101 hadoop-2.7.7]$ cd data/tmp/dfs/name/current/
    [root@hdp-101 current]$ cat VERSION
    clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
    
    [root@hdp-101 hadoop-2.7.7]$ cd data/tmp/dfs/data/current/
    clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
    注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
    
    • 3.4 基本操作
      (a)在HDFS文件系统上创建一个input文件夹
    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -mkdir -p /user/input
    
    

    (b)将测试文件内容上传到文件系统上

    [root@hdp-101 hadoop-2.7.7]$bin/hdfs dfs -put wcinput/wc.input
      /user/input/
    

    (c)查看上传的文件是否正确

    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -ls  /user/input/
    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat  /user/ input/wc.input
    

    (d)运行MapReduce程序

    [root@hdp-101 hadoop-2.7.7]$ bin/hadoop jar
    share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input/ /user/output
    

    (e)查看输出结果
    命令行查看:

    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat /user/output/*
     查看output文件
    

    (f)将测试文件内容下载到本地

    [root@hdp-101 hadoop-2.7.7]$ hdfs dfs -get /user/root/output/part-r-00000 ./wcoutput/
    
    

    (g)删除输出结果

    [root@hdp-101 hadoop-2.7.7]$ hdfs dfs -rm -r /user/root/output
    

    四、启动YARN

    • 4.1配置YARN
      (a)配置yarn-env.sh
    找到以下
    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
    取消注释并配置一下JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_141
    

    (b)配置yarn-site.xml

    <!-- Reducer获取数据的方式 -->
    <property>
     		<name>yarn.nodemanager.aux-services</name>
     		<value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hdp-101</value>
    </property>
    

    (c)配置:mapred-env.sh

    配置一下JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_141
    

    (d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml

    [root@hdp-101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
    [root@hdp-101 hadoop]$ vi mapred-site.xml
    
    <!-- 指定MR运行在YARN上 -->
    <property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    </property>
    
    • 4.2启动YARN
      (a)启动前必须保证NameNode和DataNode已经启动
      (b)启动ResourceManager
    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start resourcemanager
    

    (c)启动NodeManager

    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start nodemanager
    
    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -rm -R /user/output
    

    (c)执行MapReduce程序

    [root@hdp-101 hadoop-2.7.7]$ bin/hadoop jar
     share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input  /user/output
    

    (d)查看运行结果

    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -cat /user/output/*
    

    • 4.4配置历史服务器
      为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
      (a)配置mapred-site.xml
    [root@hdp-101 hadoop]$ vi mapred-site.xml
    在该文件里面增加如下配置。
    <!-- 历史服务器端地址 -->
    <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hdp-101:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hdp-101:19888</value>
    </property>
    

    (b)启动历史服务器

    [root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh start historyserver
    

    (c)查看历史服务器是否启动

    [root@hdp-101 hadoop-2.7.7]$ jps
    

    (d)查看JobHistory
    http://hdp-101:19888/jobhistory

    • 4.5配置日志的聚集
      日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
      日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
      注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
      开启日志聚集功能具体步骤如下:
      (a)配置yarn-site.xml
    [root@hdp-101 hadoop]$ vi yarn-site.xml
    在该文件里面增加如下配置。
    <!-- 日志聚集功能使能 -->
    <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    </property>
    
    <!-- 日志保留时间设置7天 -->
    <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
    </property>
    

    (b)关闭NodeManager 、ResourceManager和HistoryManager

    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh stop resourcemanager
    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh stop nodemanager
    [root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh stop historyserver
    

    (c)启动NodeManager 、ResourceManager和HistoryManager

    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start resourcemanager
    [root@hdp-101 hadoop-2.7.7]$ sbin/yarn-daemon.sh start nodemanager
    [root@hdp-101 hadoop-2.7.7]$ sbin/mr-jobhistory-daemon.sh start historyserver
    

    (d)删除HDFS上已经存在的输出文件

    [root@hdp-101 hadoop-2.7.7]$ bin/hdfs dfs -rm -R /user/output
    

    (e)执行WordCount程序

    [root@hdp-101 hadoop-2.7.7]$ hadoop jar
     share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/input /user/output
    

    (f)查看日志
    http://hdp-101:19888/jobhistory

    五、配置文件的说明

    • Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性
    要获取的默认文件 文件存放在Hadoop的jar包中的位置
    [core-default.xml] hadoop-common-2.7.7.jar/ core-default.xml
    [hdfs-default.xml] hadoop-hdfs-2.7.7.jar/ hdfs-default.xml
    [yarn-default.xml] hadoop-yarn-common-2.7.7.jar/ yarn-default.xml
    [mapred-default.xml] hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml
    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置
  • 相关阅读:
    pytest测试框架的简单应用
    windows下Docker无法正常启动-The system cannot find the file specified
    docker-centos6.9 /etc/rc.d/init.d/functions: No such file or directory解决方法
    All TAP-Windows adapters on this system are currently in use.
    DNS服务器配置named.ca详解
    python单元测试unittest常用断言
    python学习之异常
    python学习之元类
    python学习之property进阶
    python学习之描述符自制property
  • 原文地址:https://www.cnblogs.com/hziwei/p/12787690.html
Copyright © 2020-2023  润新知