一、Hadoop安装前的准备工作
 =================================
      1、安装centOS操作系统(参考发的大数据工具中的Linux文件夹下的安装文档)     2、使用下发的大数据工具中的SSH_SFTP工具进入系统中,新建两个目录
           mkdir /tools       ---->用于存放软件包
           mkdir /training    ---->用于安装软件
     
      3、安装JDK
           (*) 上传jdk-8u171-linux-x64.tar.gz到tools目录下,然后执行下面的命令进行解压安装
                     tar -zvxf jdk-8u171-linux-x64.tar.gz  -C /training/
           (*) 配置环境变量:
                     vi ~/.bash_profile
                     在.bash_profile文件中添加如下信息:
                          export JAVA_HOME=/training/jdk1.8.0_171
                          export JRE_HOME=$JAVA_HOME/jre
                          export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
                          export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin;
           (*) 让环境变量生效
                     source ~/.bash_profile
           (*) 验证jdk是否安装成功
                     java -version
          
      3、关闭防火墙(CentOS7下)
           systemctl stop firewalld.service
           systemctl disable firewalld.service
               
      4、配置主机名(如何已经设置,此步骤可以不用设置)
           hostnamectl --static set-hostname niit
           说明:--static 参数代表永久生效 niit表达你希望设置的主机名
          
 二、安装hadoop:
 ====================================
           (1)上传hadoop-2.7.3.tar.gz到tools目录下,然后执行下面的命令进行解压安装
                     tar -zvxf hadoop-2.7.3.tar.gz -C /training/
          
           (2)配置环境变量:
                     vi ~/.bash_profile
                     添加如下信息:
                     export HADOOP_HOME=/training/hadoop-2.7.3
                     export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
                    
           (3)让环境变量生效:
                     source ~/.bash_profile
                    
           (4)验证是否生效:
                     执行:hdfs 或者hadopo 有相关信息出现即可
               
 三、hadoop的三种安装方式
 =================================================
      0、首页配置主机名与IP地址的映射关系
           vi /etc/hosts
           在文件的末尾添加类似于
           192.168.215.152 niit04这样的格式ip和主机名称选择自己的即可
          
      1、本地模式 (特点:没有HDFS,只能进行MapReduce计算,而且只操作Linux上的文件)
           (1)此模式下只需要配置hadoop-env.sh文件即可,修改该文件:
                     vi /training/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
           (2)在hadoop-env.sh 文件中找到JAVA_HOME,并进行如下修改
                     export JAVA_HOME=/training/jdk1.8.0_171
           (3)运行MapReduce程序进行测试:
               
                测试前需要创建测试目录和测试文件:
                     mkdir ~/input
                     vi ~/input/test.txt
                     输入如下内容:
                     I love Guiyang
                     I love Guizhou
                     Guiyang is the capital of Guizhou
                     保存退出
                     进入到:cd /training/hadoop-2.7.3/share/hadoop/mapreduce/目录下
                     执行:~/output 不需要事先存在,存在会报错
                     hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/input/test.txt ~/output
                查看结果:
                    
                     cat ~/output/part-r-0000
                    
                     MapReduce程序的执行结果会默认按照英文单词的字典顺序进行了排序
          
      2、伪分布模式 (特点:具备HDFS全部功能)
           (0)新建一个tmp目录:mkdir /training/hadoop-2.7.3/tmp
           (1)配置免密码登录:
                执行如下命令:
                     (*)ssh-keygen -t rsa
                     (*)cd ~/.ssh/
                     (*)ssh-copy-id -i id_rsa.pub root@niit04
           (2)进入到/training/hadoop-2.7.3/etc/hadoop目录下
                cd /training/hadoop-2.7.3/etc/hadoop
                需要对五个文件进行配置:
                (*)hadoop-env.sh
                (*)hdfs-site.xml
                (*)core-site.xml
                (*)mapper-site.xml
                (*)yarn-site.xml
           (3)对(2)中的五个文件进行配置,配置步骤如下:
                (*)hadoop-env.sh的配置参考本地模式中的(1)(2)两个步骤
                (*)配置hdfs-site.xml文件:
                     vi /training/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
                     在hdfs-site.xml文件的<configuration></configuration>之间添加如下信息:
                          <property>
                             <name>dfs.replication</name>
                             <value>1</value>
                          </property>
                          <property>
                             <name>dfs.permissions</name>
                             <value>false</value>
                          </property>
               
                (*)配置core-site.xml文件:
                     vi /training/hadoop-2.7.3/etc/hadoop/core-site.xml
                     在core-site.xml文件的<configuration></configuration>之间添加如下信息:
                          <property>
                               <name>fs.defaultFS</name>
                               <value>hdfs://niit04:9000</value>
                          </property>              
                          <property>
                               <name>hadoop.tmp.dir</name>
                               <value>/training/hadoop-2.7.3/tmp</value>
                          </property>
     
                (*)配置mapper-site.xml文件(这个文件事先是不存在的,需要复制一份)
                     (1)cp /training/hadoop-2.7.3/etc/hadoop/mapred-site.xml.template /training/hadoop-2.7.3/etc/hadoop/mapred-site.xml
                     (2)vi /training/hadoop-2.7.3/etc/hadoop/mapred-site.xml
                     (3)在mapper-site.xml文件的<configuration></configuration>之间添加如下信息:
                               <property>
                                    <name>mapreduce.framework.name</name>
                                    <value>yarn</value>
                               </property>
               (*)配置yarn-site.xml文件:
                     vi /training/hadoop-2.7.3/etc/hadoop/yarn-site.xml
                     在yarn-site.xml文件的<configuration></configuration>之间添加如下信息:
                          <property>
                             <name>yarn.resourcemanager.hostname</name>
                             <value>niit04</value>
                          </property>
                          <property>
                             <name>yarn.nodemanager.aux-services</name>
                             <value>mapreduce_shuffle</value>
                          </property>    
          
           (4)格式化:HDFS(NameNode)
                     hdfs namenode -format
                     成功日志:
                          common.Storage: Storage directory /training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
          
           (5)启动hadoop环境
                     start-all.sh
           (6)验证:
                     (1)web界面进行验证
                               HDFS:http://niit04:50070
                               Yarn:http://niit04:8088
                     (2)执行jps命令,看看是否会有如下进程:
                               NameNode
                               DataNode
                               SecondaryNameNode
                               ReourceManager
                               NodeManager
          (7)如果需要停止,则执行如下操作:
                     stop-all.sh
           (8)伪分布模式安装配置已完成     3、全分布模式(需要3台主机,niit01,niit02,niit03,其中niit01是主节点,其他是从节点)
           一、准备工作
                1、所有主机安装jdk
                2、所有主机都需要关闭防火墙
                3、所有主机都需要配置主机名映射关系  vi /etc/hosts
                4、配置免密码登录(配置两两之间的免密码登录)
                     所有的机器都需要产生一对密钥:公钥和私钥
                     ssh-keygen -t rsa
                     所有主机需要执行
                     ssh-copy-id -i .ssh/id_rsa.pub root@niit01
                     ssh-copy-id -i .ssh/id_rsa.pub root@niit02
                     ssh-copy-id -i .ssh/id_rsa.pub root@niit03
                    
                5、保证每台机器的时间是一样的
                     如果不一样的话,我们在执行MapReduce程序的时候可能会存在问题
                     解决方案:
                          1)搭建一个时间同步的服务器,网上很多教程可以使用
                          2)使用putty工具,可以简单实现这个功能:
                               date -s 2018-07-30 后面必须敲一个回车
                              
           二、在主节点上进行安装配置(niit01)
                (*)上传hadoop安装包,解决配置环境变量
                       tar -zvxf /tools/hadoop-2.7.3.tar.gz -C /training/
                       同时设置:niit01 niit02 niit03
                          HADOOP_HOME=/training/hadoop-2.7.3
                          export HADOOP_HOME
                          PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
                          epxort PATH
                         
                (*)mkdir /training/hadoop-2.7.3/tmp
               
                (*)修改配置文件
                     vi /training/hadoop-2.7.3/etc/hadoop/hadoop-env.sh  设置JDK的路径-参考伪分布模式
                     vi /training/hadoop-2.7.3/etc/hadoop/hdfs-site.xml  参考伪分布环境
                     添加如下信息:
                          <property>
                             <name>dfs.replication</name>
                             <value>2</value>
                          </property>
                          <property>
                             <name>dfs.permissions</name>
                             <value>false</value>
                          </property>
                         
                     vi /training/hadoop-2.7.3/etc/hadoop/core-site.xml
                     添加如下信息:
                          <property>
                               <name>fs.defaultFS</name>
                               <value>hdfs://niit01:9000</value>
                          </property>              
                          <property>
                               <name>hadoop.tmp.dir</name>
                               <value>/training/hadoop-2.7.3/tmp</value>
                          </property>
                         
                     vi /training/hadoop-2.7.3/etc/hadoop/mapper-site.xml
                          添加如下信息:
                          <property>
                               <name>mapreduce.framework.name</name>
                               <value>yarn</value>
                          </property>
                         
                     vi /training/hadoop-2.7.3/etc/hadoop/yarn-site.xml:
                               添加如下信息:
                               <!--Yarn的主节点RM的位置-->
                               <property>
                                  <name>yarn.resourcemanager.hostname</name>
                                  <value>niit01</value>
                               </property>                              <!--MapReduce运行方式:shuffle洗牌-->
                               <property>
                                  <name>yarn.nodemanager.aux-services</name>
                                  <value>mapreduce_shuffle</value>
                               </property>    
                     vi /training/hadoop-2.7.3/etc/hadoop/slaves:
                          添加如下信息:
                          niit02
                          niit03
                (*)格式化nameNode
                          hdfs namenode -format
                          日志:
                          common.Storage: Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
                (*)将niit01上的hadoop环境复制到niit02 niit03
                          scp -r hadoop-2.7.3/ root@niit02:/training/
                          scp -r hadoop-2.7.3/ root@niit03:/training/
                (*)在主节点(niit01)上启动hdfs
                     start-all.sh