zoukankan      html  css  js  c++  java
  • Hadoop分布式集群搭建

    1.机器规划

    编号 主机 主机IP 安装组件
    1 node1 192.168.96.3 namenode、zkfc、datanode、nodemanager、zookeeper、jdk
    2 node2 192.168.96.4 namenode、zkfc、datanode、resourcemanager 、nodemanager、 zookeeper、jdk
    3 node3 192.168.96.5 datanode、nodemanager、 zookeeper、jdk

    2. Linux ip修改

     [root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
      BOOTPROTO=dhcp
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=yes
      NAME=eno16777736
      UUID=d71373c8-ebe8-488f-b003-ffab7da5ee52
      DEVICE=eno16777736
      ONBOOT=yes
      IPADDR=192.168.96.3
      NETMASK=255.255.255.0
      GATEWAY=192.168.96.2
    

    3.修改linux主机名

     Node1
     [root@node1 ~]# vim /etc/hostname   #进入之后直接写想要的主机名
     [root@node1 ~]# vim /etc/sysconfig/network
     # Created by anaconda
     NETWORKING=yes
     HOSTNAME=node1
     验证命令:hostname
     node2和node3同样的操作,分别写入node2、node3
    

    4. 更改host

     [root@node1 ~]# vim /etc/hosts
     192.168.96.3  node1   #在文件的最后添加
     [root@node1 ~]# systemctl stop firewalld.service #关闭防火墙功能
     [root@node1 ~]# systemctl disable firewalld.service  #将防火墙去除开机自启
     Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
     Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
    

    5.3台机器上分别执行ssh免密钥登录

     [root@node1 ~]# ssh-keygen
     [root@node1 ~]# ls .ssh/   #查看.ssh/目录会生成公钥、私钥两个文件
     [root@node1 ~]# ssh-copy-id -i node1  #执行公钥赋值生成认证文件
     [root@node1 ~]# ls .ssh/  #再次查看目录下会新增两个认证文件
     分别在node2、node3上执行ssh-keygen命令生成公钥、密钥文件
     执行(ssk-copy-id -i node1)对node1执行免密钥登录
    

    6.下载jdk

     下载地址http://www.oracle.com/technetwork/java/javase/downloads #选择对应版本的jdk
     [root@node1 liangml]# tar -xvf jdk-8u111-linux-x64.tar.gz #解压jdk
     配置变量环境
     [root@node1 liangml]# vim /etc/profile #修改配置文件
      export JAVA_HOME=/home/liangml/jdk1.8.0_111
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
     [root@node1 liangml]# source /etc/profile #执行source命令立即生效
     [root@node1 liangml]# java -version #验证命令
      java version "1.8.0_111"
      Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
    

    7.安装zookeeper

     下载地址http://www.apache.org/dyn/closer.cgi/zookeeper/
     [root@node1 liangml]# tar -xvf zookeeper-3.4.6.tar.gz
     [root@node1 conf]# vim zoo.cfg   #默认没有这个配置文件
      dataDir=/home/liangml/zookeeper-3.4.6/data   #制定zookeeper数据目录
      server.1=node1:2888:3888  #添加端口
      server.2=node2:2888:3888
      server.3=node3:2888:3888
      clientPort=2181  #客户端连接端口
      initLimit=10
      syncLimit=5
      配置zookeeper的myid文件(node2、node3配置文件分别为2、3)
      [root@node1 zookeeper-3.4.6]# vim data/myid  #编辑data/myid配置文件(修改id为1)
      [root@node1 liangml]# scp -r zookeeper liangml@node2:/home/liangml/ #复制zookeeper配置文件到node2、node3相应的目录下将myid分别更改为2、3
      [root@node1 bin]# ./zkServer.sh  start  #在3个机器上分别执行命令启用zookeeper
      [root@node1 bin]# ./zkServer.sh status #验证zookeeper启动(其中一台状态为leater、两台为follower)
    

    8.安装Hadoop

     下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common
     [root@node1 liangml]# unzip hadoop-2.6.0.zip  #解压hadoop
     [root@node1 liangml]# cd hadoop-2.6.0/etc/hadoop/
     [root@node1 hadoop]# vim hadoop-env.sh #修改配置文件hadoop-env.sh
      export JAVA_HOME=/home/liangml/jdk1.8.0_111
     [root@node1 hadoop]# vim hdfs-site.xml #修改配置文件hdfs-site.xml
      <configuration>
      <property>
      <name>dfs.nameservices</name>
      <value>ns1</value>
      </property>
      <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
      <property>
      <name>dfs.ha.namenodes.ns1</name>
      <value>nn1,nn2</value>
      </property>
      <!-- nn1的RPC通信地址 -->
      <property>
      <name>dfs.namenode.rpc-address.ns1.nn1</name>
      <value>node1:9000</value>
      </property>
      <!-- nn1的http通信地址 -->
      <property>
      <name>dfs.namenode.http-address.ns1.nn1</name>
      <value>node1:50070</value>
      </property>
      <!-- nn2的RPC通信地址 -->
      <property>
      <name>dfs.namenode.rpc-address.ns1.nn2</name>
      <value>node2:9000</value>
      </property>
      <!-- nn2的http通信地址 -->
      <property>
      <name>dfs.namenode.http-address.ns1.nn2</name>
      <value>node2:50070</value>
      </property>
      <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
      <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://node1:8485;node2:8485;node3:8485/ns1</value>
      </property>
      <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
      <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hadoop-2.6.0/journal</value>
      </property>
      <!-- 开启NameNode失败自动切换 -->
      <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
      </property>
      <!-- 配置失败自动切换实现方式 -->
      <property>
      <name>dfs.client.failover.proxy.provider.ns1</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
      </property>
      <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
      <property>
      <name>dfs.ha.fencing.methods</name>
      <value>
      sshfence
      shell(/bin/true)
      </value>
      </property>
      <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
      <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/analytics/.ssh/id_rsa</value>
      </property>
      <!-- 配置sshfence隔离机制超时时间 -->
      <property>
      <name>dfs.ha.fencing.ssh.connect-timeout</name>
      <value>30000</value>
      </property>
      </configuration>
     [root@node1 hadoop]# vim yarn-site.xml #修改yarn-site.xml配置文件
      <configuration>
      <!-- Site specific YARN configuration properties -->
      <!-- 指定resourcemanager地址 -->
      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>node2</value>
      </property>
      <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      </configuration>
     [root@node1 hadoop]# vim mapred-site.xml #修改mapred-site.xml配置文件
      <configuration>
      <!-- 指定mr框架为yarn方式 -->
      <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      </property>
      </configuration>
     [root@node1 hadoop]# vim slaves #修改slaves
      node1
      node2
      node3
     在node1启动所有的journalnode,注:调用的是hadoop-daemons.sh脚本,注意是复数s的脚本
     [root@node1 hadoop]# /home/liangml/hadoop-2.6.0/sbin/hadoop-daemons.sh start journalnode
      验证:运行jps,node1、2、3上多了journalnode进程
     格式化HDFS
      [root@node1 hadoop-2.6.0]# bin/hdfs namenode -format #格式化HDFS集群
      #格式化后会根据core-site.xml中的hadoop.tmp.dir配置生成文件,本文文件生成目录在hadoop目录tmp下,将相应的目录copy到node2、node3集群下。
      [root@node1 hadoop-2.6.0]# scp tmp/ liangml@node2:/home/liangml/hadoop-2.6.0/
     格式化ZK(在node1上执行)
      [root@node1 hadoop-2.6.0]# bin/hdfs zkfc -formatZK
     分别启动HDFS、YARN
      [root@node1 hadoop-2.6.0]# sbin/start-dfs.sh
      [root@node1 hadoop-2.6.0]# sbin/start-yarn.sh
    

    验证:

     UI验证:
      http://192.168.93.3:50070
     命令验证:
      [root@node1 bin]# ./hadoop fs -ls /
      [root@node1 bin]# ./hadoop fs -mkdir /liangml
    
  • 相关阅读:
    包括”/“排除”设置禁用了加载功能。
    如何打造高质量的机器学习数据集?
    机器学习项目流程(一)初探数据集
    java 转义与反转义
    jfinal 获取刚保存的对象的主键 ,该主键在数据库中自增
    凤凰架构:构建可靠的大型分布式系统 ISBN:9787111683919 -推荐
    STC89C52控制74HC595,74HC138双色16x16点阵屏循环显示汉字
    STC89C52驱动MAX7219LED点阵级联, 文字滚动效果
    STM32F407VET6烧录出现flash download failed target dll has been cancelled
    DS1302与STC12的连接电路和驱动实现
  • 原文地址:https://www.cnblogs.com/liangml/p/6421848.html
Copyright © 2011-2022 走看看