前期准备工作: 

  1. 安装虚拟机  : VMware 或者  VirtualBox 

  2. 下载centos7   

  3. 安装linux系统  【安装失败,解决办法 : 重启电脑 进入电脑BISO界面 修改CPU下的第3个 】 

  4. 安装linux系统时,注意打开网络配置

1.1步骤一  网络配置:

     配置静态ip :在虚拟机终端

     进入超级用户 : su 密码

    切换到目录下 :cd /etc/sysconfig/network-scripts

    打开网管配置文件 : vim ifcfg-ens33

     a) BOOTPROTO="static" # 使用静态IP地址,默认为dhcp

     b) IPADDR="192.168.***.***" # 设置的静态IP地址 【与网关ip是一样的,最后一位不是0、2、255】

     c)  NETMASK="255.255.255.0" # 子网掩码

     d) GATEWAY="" # 网关地址

    e) DNS1="" # DNS服务器   【输入网关地址】

    【输入 i 写入 ,按Esc退出写入模式 再按shift + : 输入wq 保存退出;查看网关地址的方法 :  查看虚拟机中的虚拟网络编辑器 ,找NAT模式,复制网关lp】

    重合服务 :service network restart

    配置hostname的方法为  hostnamectl set-hostname 主机名

    配置IP地址映射为 : vim /etc/hosts

              systemctl restart network.service

1.2步骤二  SSH免密登陆配置

    配置ssh免密登录 : 在虚拟机终端

    安装ssh  :  rpm -qa|grep ssh

    切换到目录下 :vim /etc/ssh/sshd_config

    a) 修改原始文件内容的43内容去掉注释#(#PubkeyAuthentication yes)

    b) 在43行上添加一条:RSAAuthentication yes

    c) 同理在其他两台虚拟机上也配置文件

    d) 重启sshd服务 : systemctl restart sshd

    【systemctl restart sshd.servic  是centos6的命令,systemctl restart sshd.servic 是centos7的命令。】

    切换到普通用户:exit

    a) 切换到 : cd ~   

    b) 生成公钥和私钥 :  ssh-keygen

    c) 切换到ssh目录 : cd .ssh 

    d) 复制公钥 : cat id_rsa.pub >> authorized_keys

    e) 修改密钥文件相关权限 : chmod 0600 authorized_keys

    f) 共享公钥 : ssh-copy-id -i id_rsa.pub 用户名@第二台虚拟机的hostnam

1.3步骤三  安装java环境

    切换到超级用户 : su 密码

    查看Java的版本 : java –version

    使用命令安装jdk : rpm –qa|grep jdk

    卸载java的旧版本(jdk1.8.0以及jdk1.7.0) : yum -y remove java-1.8.0*

    使用xftp软件连接到虚拟机中,创建myfile文件夹并上传安装包。

    a) 切换到根目录 : cd /usr

    b) 创建java目录  : mkdir java

    c) 切换到目录 : cd java

    d) 解压安装包 :tar -zxvf  /home/user/myfile/jdk  【安tab键 补全jdk的版本】

    配置java的环境

    a) 打开配置变量文件 :  vim  /etc/profile

      export JAVA_HOME=/usr/java/jdk1.8.0_144

      export PATH=$JAVA_HOME/bin:$PATH

      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    b) 重新加载配置   : source  /etc/profile

    c) 打印PATH  : echo $PATH

    d) 查看java的版本 : java –version

1.4步骤四  安装hadoop环境

    切换到超级用户  : su  密码 

    切换到目录下   : cd  /usr/local 

    解压安装包 :tar  -zxvf /home/user/myfile/hadoop    【安tab 键 补全hadoop版本】

    切换到目录       :   cd /usr/local/hadoop-2.9.2

                                 cd etc/Hadoop

    创建新文件 : vim /etc/profile.d/hadoop.sh

    设置配置hadoop.sh文件 :

        export HADOOP_HOME=/usr/local/hadoop-2.9.2

       export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    重新加载配置文件 :  source /etc/profile.d/hadoop.sh

    查看系统变量 :echo $PATH

    设置配置文件的权限 :chown -R user /usr/local/hadoop-2.9.2   【必须3台电脑都设置】

1.5步骤五  配置hadoop系统信息

    切换到目录    :   cd /usr/local/hadoop-2.9.2

    cd etc/Hadoop

    配置 hadoop-env.sh 文件  :vim   hadoop-env.sh 

    a) 第25行修改为  : export JAVA_HOME=/usr/java/jdk版本

    b) 第6行添加为  :export HADOOP_SSH_OPTS='-o StrictHostKeyChecking=no'

    c) 第113行 修改为  : export HADOOP_PID_DIR=${HADOOP_HOME}/pids

    配置 mapred-env.sh 文件 : vim  mapred-env.sh

    a) 第16行修改为 : export JAVA_HOME=/usr/java/jdk版本

    b) 第28行修改为 : export HADOOP_MAPRED_PID_DIR= ${HADOOP_HOME}/pids

    配置 yarn-env.sh 文件  :vim  yarn-env.sh

    a) 第23行修改为  :  export JAVA_HOME=/usr/java/jdk版本

    b) 最后一行 添加为 :  export YARN_PID_DIR=${HADOOP_HOME}/pids

    配置 core-site.xml 文件 : vim core-site.xml

    在<configuration></configuration>中间添加以下内容  :  【其中需要注意 :  中间的ip 是linux系统的ip】

      <property>

      <name>fs.defaultFS</name>

      <value>hdfs:自己设置的ip:9000</value>

      </property>

      <property>

      <name>hadoop.tmp.dir</name>

      <value>/usr/local/hadoop-2.9.2/hdfsdata</value>

      </property>

      <property>

      <name>io.file.buffer.size</name>

       <value>131072</value>

       </property>

    配置 mapred-site.xml 文件 :因系统没有这个文件,需要复制。 

    cp  mapred-site.xml.template mapred-site.xml 

    vim  mapred-site.xml  

    在<configuration></configuration>中间添加以下内容  :

            <property>

      <name>mapreduce.framework.name</name>

      <value>yuan</value>

      </property>

    配置 yarn-site.xml 文件 :   vim    yarn-site.xml

     在<configuration></configuration>中间添加以下内容  :

      <property>

      <name>yarn.resourcemanager.hostname</name>

      <value>master</value>

      </property>

      <property>

      <name>yarn.nodemanger.aux-services</name>

      <value>mapreduce_shuffle</value>

      </property>

    配置 slaves  文件  : vim    slaves 

      先删除原有的localhost,依次输入从节点的主机名,回车时不要有空格。

    同步配置文件 

      同步 hadoop.sh 文件 : 【切换到超级用户下】

      scp /etc/profile.d/hadoop.sh  root@从节点:/etc/profile.d/

      ls -all ~/.ssh

      cat ~/.ssh/known_hosts

      同步 hadoop 配置文件 :  【切换到普通用户下】

      scp -r /usr/local/hadoop-2.9.2/etc/hadoop/* user@从节点:/usr/local/hadoop-2.9.2/etc/hadoop/ 

1.6步骤六  关闭防火墙

  1. 在所有虚拟机上关闭防火墙  : systemctl disable  firewalld.service 【切换到超级用户下】
  2. 重启机器  :  reboot  【重启所有的虚拟机】
  3. 查看防火墙状态 : systemctl status firewalld.service 【 普通用户下输入】

1.7步骤七  格式化hadoop系统

    格式化文件系统 :【切换到普通用户下】

  1. 必须在主节点上 : hdfs namenode -format
  2. 验证是否格式化成功:查看hadoop的安装目录下是否有hdfsdata文件夹 
  3. 切换到目录  :  cd /usr/local/hadoop-2.9.2
  4. 查看其下的所有内容  : ls

1.8步骤八  启动hadoop

  1. 启动全分布模式Hadoop集群的守护进程

    a) 命令1:start-dfs.sh

    b) 命令2:start-yarn.sh

    c) 命令3:mr-jobhistory-daemon.sh start historyserver

   说明:

    a) 命令1执行后,所产生的文件及服务

    b) 启动的服务:主节点(NameNode SecondaryNameNode),从节点( DataNode )
      查看启动了哪些服务的方法:
      命令:jps
      生成的文件:

    c) 在主节点的hadoop安装目录/hdfsdata/dfs中自动生成namesecondary目录及文件

     在主,从节点的hadoop安装目录下生logs日志文件目录及文件,pids守护进程号目录及文件

     在从节点的hadoop安装目录/hdfsdata/dfs中自动生成data数据块目录及文件

    d) 命令2执行后,所产生的文件及服务

      启动的服务:主节点(ResourceManager) 从节点(NodeManager)
      生成的文件:在从节点的hadoop安装目录的hdfsdata下产生nm-local-dir文件目录及文件
      生成的文件:在个日志文件目录(logs)中,会生成各日志文件。

    e) 命令3执行后,所产生的文件及服务
     启动的服务:主节点(JobHistoryServer)
     生成的文件:在各日志文件目录(logs)中,产生日志文件
    注:与mapreduce有关的日志文件

1.9步骤九  验证hadoop集群

  1. 步骤1:打开浏览器
  2. 步骤2:输入网址(master的ip地址)

    a) 192.168.246.128:50070 HDFS 进程的Web

    b) 192.168.246.128:8088 YARN 进程的Web

    c) 192.168.246.128:19888 MapReduce 进程的Web

  1. 运行第1个MapReduce程序—WordCount

    a) 三大核心:存储(HDFS) 计算(MapReduce) 管理框架(yarn)

    b) 在根目录下,新建一个存放需要计算的文件的文件夹 (InputDataTest)

    c) hdfs dfs -mkdir /InputDataTest

    d) 上传两个文件hadoop-env.sh ,mapred-env.sh

    e) hdfsdfs-put /usr/local/hadoop-2.9.2/etc/hadoop/hadoop-env.sh /InputDataTest hdfs dfs -put /usr/local/hadoop-2.9.2/etc/hadoop/mapred-env.sh /InputDataTest

    f) 运行WordCount( 工作目录:/usr/local/hadoop-2.9.2/share/hadoop/mapreduce/)
      hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcout 源文件夹 目标文件夹
      功能:统计源文件中的每个字符的个数,将统计结果存放到目标文件中
      示例:hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcout /InputDataTest /OutputDataTest

    g) 查看运行结果

    h) hdfs dfs -ls /OutputDataTest
      注意:会有两个文件(_SUCCESS:表示运行成功,没有任何内容)
      part-r-00000:里面存放的运行结果,查看该文件内容的命令hdfs dfs -cat /OutputDataTest/part-r-00000

1.10步骤十  退出hadoop集群

  关闭Hadoop

    说明:闭流程和启动流程相反,有以下三个命令

    1. mr-jobhistory-daemon.sh stop historyserver

    2. stop-yarn.sh

    3. stop-dfs.sh