第1步:准备三台虚拟机,一台作为master,两台作为slave。

第2步:三台虚 拟机必须能访问外网,并且能相互ping通。

第3步:查看三台主机的名字,为后续使用ssh能互相连接。分别为master,slave1,slave2

                  分别查看三台虚拟机。

                  查看命令 hostname

                  修改命令vi etc/sysconfig/network

                  使用source etc/sysconfig/network刷新,若不行则reboot。

第4步: 安装ssh服务,使三台虚拟机不需要密码就能相互访问。安装命令yum -y openssh-server 安装服务,安装客户端 yum -y openssh-clients。

 

第5步:  如果能让其他服务器访问本服务器必须关闭防火墙  命令 service iptables stop,禁止防火墙开机启动chkconfig iptables off,

第6步: 配置相关域名,通过域名,不需要通过ip地址就能访问。命令 vi etc/hosts,IP地址分别为三台服务主机的地址。

                                                           192.168.174.101    master

                 192.168.174.102    slave1

                 192.168.174.103    slave2

第7步:执行ssh-keygen生成公钥和秘钥 使三台服务通过公钥和秘钥来相互连接。

第8步:通过ssh-copy-id master或者IP地址 /root/.ssh/id_rsa.pub 把公钥发给master

第9步:master使用命令cat /root/.ssh/authorized_keys查看收到的公钥

第10步:master发送公钥给slave1和slave2 命令 scp  /root/.ssh/authorized_keys root@slave1:/root/.ssh/

                                                                                  scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/

 

第11步: 分别执行ssh命令,查看是否能相互登录。

        ssh master   exit

        ssh slave1   exit

        ssh slave2   exit

 

第12步:在master中建立一个文件夹/opt/SoftWare/  命令mkdir /opt/SoftWare/ 

 

第13步:进入/opt/SoftWare/目录中 并安装 yum -y install lrzsz  

                     lrzsz工具是可以上传本地的文件 

                      命令为 yum -y install lrzsz    

                      上传命令 rz

                       也可以同个wget 路径 下载

第14步:上传jdk到/opt/SoftWare/中

                     命令rz

第15步:解压jdk命令为

                     tar -xvf jdk名称

 

第16步:配置环境变量

                    命令     vi /etc/profile 

                    添加一下内容

             

export JAVA_HOME=/opt/SoftWare/jdk1.8.0_151  #这是jdk的安装路径
      export JRE_HOME=$JAVA_HOME/jre 如果失败则    export JRE_HOME=/opt/SoftWare/jdk1.8.0_151/jre        #java运行环境配置
      export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #javac的编译器的环境变量,系统自动去查找jar包
      export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #当系统运行javac或者java等然后会从path路径中查找。

第17步: 刷新环境变量 source /etc/profile 并查看是否配置成功 命令 java -version,或者javac,java

 

第18步:    下载hadoophttp://hadoop.apache.org/releases.html。 

第19步:   进入/opt/SoftWare/目录中 上传hadoop到文件夹中

                     命令 :cd /opt/SoftWare/

                     命令:rz

       

第20步:     解压hadoop

                      命令 tar -xvf hadoop压缩包 

第21步: 配置hadoop环境变量

                  命令 vi /etc/profile 

                  添加内容

       

export HADOOP_HOME=/opt/SoftWare/hadoop-2.7.3
               export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

第22步:刷新环境变量 source /etc/profile 并查看是否配置成功 命令 java -version,或者javac,java

 

第23步: 进入/opt/SoftWare/hadoop-2.7.3 中 创建 tmp,logs,hdfs/namenode,hdfs/datanode,hdfs

                  命令 mkdir tmp,mkdir logs, mkdir hdfs,mkdir hdfs/namenode, mkdir hdfs/datanode,

 

第24步:  进入/opt/SoftWare/hadoop-2.7.3/etc/hadoop中 这是hadoop中所有的配置文件

检查hadoop中客户端连不上 hadoop网络连接_检查hadoop中客户端连不上

                   24.1  修改配置文件中hadoop-env.sh   修改环境变量

                          命令:vi hadoop-env.sh

                              修改第 25 行的 ${JAVA_HOME} 为自己的 jdk 安装目录         

                         (/opt/SoftWare/jdk1.8.0_151)

检查hadoop中客户端连不上 hadoop网络连接_检查hadoop中客户端连不上_02

            24.2 修改配置文件yarn-env.sh  

                修改第 23 行,解注释(export JAVA_HOME=/home/y/libexec/jdk1.6.0/),修改路径为自己的 jdk 安装目录

     (/opt/SoftWare/jdk1.8.0_151 )

检查hadoop中客户端连不上 hadoop网络连接_检查hadoop中客户端连不上_03

              24.3修改配置文件slaves 

     修改 localhost 为 slave1 和 slave2 目的是为slaves中有两个slave1和slave2

    24.4 将mapreduce-site.xml.template 从命名为mapreduce-site.xml 

        命令为mv mapred-site.xml.template mapred-site.xml 重命名 mapred-site.xml.template

            24.5 修改hadoop核心配置文件core-site.xml

              命令 vi etc/hadoop/core-site.xml

      修改内容为

<property>
               <name>fs.defaultFS</name>
                 <!--定义HadoopMaster的URI和端口-->
                <value>hdfs://master:9000</value>

<!--  fs.defaultFS- 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->

     

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

                <!--hadoop 中的临时存储目录,tmp 文件夹的路径 --> <!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->

           

<value>file:/opt/SoftWare/hadoop-2.7.3/tmp</value>
             </property>
              <property>
                <name>io.file.buffer.size</name>

    <!--用作序列化文件处理时读写buffer的大小-->

                     

<value>131702</value>
              </property>

           24.5 修改hadoop中分布式文件系统配置文件hdfs-site.xml:

         命令  vi etc/hadoop/hdfs-site.xml

 

<property>
    <!-- namenode 节点数据存储目录 -->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <!-- datanode 数据存储目录 -->
    <value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/datanode</value>
  </property>
  <property>
    <!-- 指定DataNode存储block的副本数量,不大于DataNode的个数就行 -->
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <!-- 指定master的http地址 -->
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
  </property>
  <property>
    <!-- 指定master的https地址 -->
    <name>dfs.namenode.secondary.https-address</name>
    <value>master:50091</value>
  </property>
  <property>
    <!-- 必须设置为true,否则就不能通过web访问hdfs上的文件信息 -->
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
   24.5 修改hadoop中集群管理和调度配置文件yarn-site.xml
          命令  vi etc/hadoop/yarn-site.xml
 <property>
    <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
    <property>
    <!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。-->
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property>
    <!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property>
    <!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property>
    <!--用户可通过该地址在浏览器中查看集群各类信息。-->
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
  <property>

    <!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->

<name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>

24.5 修改hadoop中mapreduce配置文件/mapred-site.xml

 

 命令 vi etc/hadoop/mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>  #运行在yarn框架上
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>  <!---- 指定mr框架jobhistory的内部通讯地址。目前还不知道是做什么的 -->
    <value>master:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>    <!---- 指定mr框架web查看的地址 -->
    <value>master:19888</value>
  </property>

第25步:将/opt/SoftWare/中的文件复制一份到slave1和slave2  

            命令:scp -r /opt/SoftWare/ root@slave1:/opt/

         scp -r /opt/SoftWare/ root@slave2:/opt/

第26步:把 /etc/profile 文件拷贝到 slave1 和 slave2 的 /etc 下

   命令  scp /etc/profile/ root@slave1:/etc/

        scp /etc/profile/ root@slave2:/etc/

第27步:在slave1和slave2中验证文件是否存在和java程序是否能运行

第28步:锁定时间同步

   安装时间同步软件 ntpdate:yum -y install ntp ntpdate

   和网络时间进行同步:ntpdate cn.pool.ntp.org

   把时间写入硬件进行锁定:hwclock --systohc

第29步:进入 hadoop-2.7.3/bin 目录,使用 ./hdfs namenode -format 进行格式化(master操作)

检查hadoop中客户端连不上 hadoop网络连接_检查hadoop中客户端连不上_04

          命令:cd bin 

                   ./hdfs namenode -format

不允许多次格式化,会导致集群无法启动

          如果出错:

              1. 修改配置文件

              2. 删除 三个 上的 hdfs/name 和 hdfs/data 文件夹

              3. 把修改的内容发送到 slave1 和 salve2 下

                 时刻保持 3 个虚拟机的配置文件是一致的

              4. 重新格式化

 

第30步:进入 hadoop-2.7.3/sbin 目录,使用 ./start-dfs.sh 启动 hdfs 服务

检查hadoop中客户端连不上 hadoop网络连接_hdfs_05

命令为   cd sbin

./start-dfs.sh

第31步:(master,slave1,slave2)分别执行jps查看进程,登录http://master(IP地址):50070查看活动节点

 

第32步:master进入 hadoop-2.7.3/sbin 目录,使用 ./start-yarn.sh 启动 yarn 服务

 

第33步:(master,slave1,slave2)分别执行jps查看进程,登录http://master(IP地址):8088查看resourcemanage情况

第34步:27.进入 hadoop-2.7.3/sbin 目录,使用 ./stop-dfs.sh 关闭 hdfs 服务

   进入 hadoop-2.7.3/sbin 目录,使用 ./stop-yarn.sh 关闭 yarn 服务

 

   切记:关虚拟机前先关闭 hadoop 集群,不然可能会导致集群的崩溃

 

备注:可以使用./start-all.sh打开所有的服务也可以使用./来停止所有的服务