hadoop完全分布式安装

概述

  一主两从(centos7)

    10.10.0.100 master (namenode)

    10.10.0.101 slave1  (datanode)

    10.10.0.102 slave2  (datanode)

  真机(win7)

    10.10.0.1

一、安装vmware

 1、设置网络

  (1)、设置虚拟机链接方式为NAT方式,NAT设置子网为:10.10.0.0,子网掩码为:255.255.255.0,网关为:10.10.0.254

  (2)、真机VMnet8(真机和虚拟机NAT连接的专用网卡)网卡的ip地址为10.10.0.1,子网掩码为:255.255.255.0,网关为:10.10.0.254

 2、创建虚拟机centos64安装centos7(纯净,以后实验备用)

二、master的安装与设置

  1、完整克隆出master

  2、关闭防火墙:systemctl stop firewalld (临时关闭)systemctl disable firewalld(永久关闭)

  3、设置ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    BOOTPROTO=static(静态IP)

    ONBOOT=yes(开机启动)

    IPADDR=10.10.0.100(IP地址)

    GATEWAY=10.10.0.254(网关)

    NETMASK=255.255.255.0(子网掩码)

    #修改完成后,重启网络使用ip生效:service network restart

    ping 10.10.0.1(真机)

  3、修改DNS以便上外网

    (1)设置不通过网络管理器管理DNS

       vi /etc/NetworkManager/NetworkManager.conf

       添加:dns=none

    (2)新增DNS

      vi /etc/resolv.conf

      添加:nameserver=10.10.0.254(和网关保持一致,就类似虚拟机master和真机同接一个路由器一样,这样就共享上外网了)

      ping www.qq.com进行测试

  4、安装vim便于快速编辑文本

    rpm -qa|grep vim //查找是否安装了vim

    yum -y install vim*  //安装vim,需要连接外网

  5、修改主机名

    vim /etc/hostname

    master

  6、修改hosts文件

    vim /etc/hosts

    10.10.0.100 master

    10.10.0.101 slave1

    10.10.0.102 slave2

三、安装辅助工具

  1、安装xftp(真机向虚拟机传文件)

  2、安装xshell(远程登录虚拟机更方便操作)

四、安装jdk

  1、下载jdk,并通过xftp传入master虚拟机,解压即可。

    (1)事先创建目录,命令:mkdir -p /home/hadoop/download ,说明:download专门放下载的安装包(jdk、hadoop、hbase等),安装于hadoop目录下。

    (2)解压:tar -zxvf  /home/hadoop/download/jdk-8u181-linux-x64.tar.gz  -C  /home/hadoop/

  2、配置jdk

    vim  /etc/profile(编辑配置文件)     

      添加:

      export JAVA_HOME=/home/hadoop/jdk1.8.0_181
      export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
      export PATH=.:$JAVA_HOME/bin:$PATH

    source  /etc/profile(编译生效)

五、安装hadoop

  1、下载安装

    解压命令:tar -zxvf  /home/hadoop/download/hadoop-2.7.3.tar.gz -C  /home/hadoop/

  2、配置>

    (1)配置环境变量

      vim /etc/profile

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181
        export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
        export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
        export PATH=.:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP/sbin

      source /etc/profile

    (2)编辑slaves文件

      进入hadoop配置文件所在目录:cd  /home/hadoop/hadoop-2.7.3/etc/hadoop/

      vim slaves

        slave1

        slave2

      说明:将datanode的主机名写入该文件,删除原来的localhost,让master仅作为namenode用

    (3)编辑core-site.xml文件

      vim core-site.xml

        <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>

          <!-- 该临时目录主要存放secondaryNameNode的一些数据,如:fsimage、edit这样数据是为了恢复NameNode节点而准备的 -->
          <value>/home/hadoop/hadoop-2.7.3/tmp</value>
        </property>
        </configuration>

      说明:事先要创建tmp目录

    (4)编辑hdfs-site.xml文件

      vim hdfs-site.xml  

        <configuration>
        <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>master:9001</value>  <!-- 通过web方式查看secondaryNameNode节点的状态 -->
        </property>
        <property>
          <name>dfs.replication</name><!--DataNode的副本数-->
          <value>2</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/home/hadoop/hadoop-2.7.3/hdfs/name</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/hdfs/data</value>
        </property>
        </configuration>

      说明:需要创建hdfs目录,但不需要创建其下的name和data,格式化后会自动创建这两目录。

    (5)编辑yarn-site.xml文件(如果修改后一定要复制到其它节点

      vim yarn-site.xml

        <configuration>
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
          <name>dfs.resourcemanager.hostname</name>
          <value>master</value>
        </property>    

        <property>
          <name>yarn.resourcemanager.address</name>
          <value>master:8032</value>
        </property>
        <property>
          <name>yarn.resourcemanager.scheduler.address</name>
          <value>master:8030</value>
        </property>
        <property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
          <value>master:8031</value>
        </property>

        </configuration>

    (6)编辑mapred-site.xml文件

      重命名:mv  mapred-site.xml.template   mapred-site.xml

      编辑:vim mapred-site.xml 

        <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
          <final>true</final>
        </property>
        <property>
          <name>mapreduce.jobhistory.address</name>
          <value>master:10020</value>
        </property>
        <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>master:19888</value>
        </property>
        </configuration>

    (7)编辑hadoop-env.sh

      vim hadoop-env.sh

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181

    (8)编辑yarn-env.sh

        vim yarn-env.sh

          export JAVA_HOME=/home/hadoop/jdk1.8.0_181

 

六、完整克隆master为slave1、slave2

  1、修改slave1的ip

    vim /etc/sysconfig/network-scripts/ifcfg-ens33

      IPADDR=10.10.0.101(IP地址)

  2、修改slave1的主机名

    vim /etc/hostname

      slave1

  3、修改slave2的ip

    vim /etc/sysconfig/network-scripts/ifcfg-ens33

      IPADDR=10.10.0.102(IP地址)

  4、修改slave1的主机名

    vim /etc/hostname

      slave2

七、集群ssh免密登录

  以master为例

  1、生成密钥:ssh-keygen -P ""

   在/root/.ssh目录下可以看到有authorized_keys、id_rsa、id_rsa.pub三个文件

  2、将master的公钥id_rsa.pub复制到master、slave1、slave2的authorized_keys

    (1)ssh-copy-id master  //登录测试:ssh master//退出:exit

    (2)ssh-copy-id slave1

    (3)ssh-copy-id slave2

  3、slave1和slave2重复上述步骤2

八、启动hadoop

   第一次启动需要格式化:hdfs namenode -format  

  启动:start-all.sh(相当于start-hdfs.sh和start-yarn.sh)

  查看master进程:jps

    Jps、NameNode、SecondaryNameNode、ResourceManager

  查看slave1进程:jps

    Jps、DataNode、NodeManager

  真机浏览器访问hadoop

    http://10.10.0.100:50070  //50070是namenode默认的端口号

  查看节点的情况:http://10.10.0.100:8088  //8088是ResourceManager默认的端口号

   运行wordcount:

    1、在hdfs上新建目录

      hdfs dfs -mkdir -p /input/wordcount(输入目录)

      hdfs dfs -mkdir -p /output/wordcount(输出目录)

    2、新建2个文本文件txt1、txt2并传入hdfs,作为运行所需要的数据

      hdfs dfs -put  /tmp/txt* /input/wordcount

    3、运行hadoop自带的wordcount程序

      hadoop jar /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar /input/wordcount /output/wordcount

    4、观察结果:hdfs dfs -ls output/wordcount

 

 

安装zookeeper

  1、安装

    进入download目录:cd /home/hadoop/download/

    解压:tar -zxvf  zookeeper-3.4.9 -C ..(..为父目录即hadoop)

  2、配置环境变量

    export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.9

    export PATH=$PATH:$ZOOKEEPER_HOME/bin(在末尾加zookeeper的bin路径)

  3、修改配置文件

    先创建文件夹:

      mkdir -p /home/hadoop/zookeeper-3.4.9/data

      mkdir -p /home/hadoop/zookeeper-3.4.9/log

    复制zoo_sample.cfg:

      cd /home/hadoop/zookeeper-3.4.9/conf

      cp zoo_sample.cfg zoo.cfg

      vim zoo.cfg

        dataDir=/home/hadoop/zookeeper-3.4.9/data

        dataLogDir=/home/hadoop/zookeeper-3.4.9/log

        server.1=master:2888:3888

        server.2=slave1:2888:3888

        server.3=slave2:2888:3888

      在dataDir对应的目录下创建myid并输入内容:

        cd /home/hadoop/zookeeper-3.4.9/data

        echo '1' >myid

  4、复制zookeeper-3.4.9到slave1、slave2

      scp -r /home/hadoop/zookeeper-3.4.9 slave1:/home/hadoop/

      修改slave1的data目录下myid为2

        vim /home/hadoop/zookeeper-3.4.9/data/myid

          2

      scp -r /home/hadoop/zookeeper-3.4.9 slave2:/home/hadoop/

      修改slave2的data目录下myid为3

        vim /home/hadoop/zookeeper-3.4.9/data/myid

          3

  5、在三台机器上分别启动zkServer

      /home/hadoop/zookeeper-3.4.9/bin/zkServer.sh start

      查看进程:jps

      2225 NameNode
      3889 Jps
      2564 ResourceManager
      3048 QuorumPeerMain(增加)
      2413 SecondaryNameNode

      查看状态:zkServer.sh status

 

安装hbase

  1、安装

    进入download目录:cd /home/hadoop/download/

    解压:tar -zxvf  hbase-1.2.3 -C ..(..为父目录即hadoop)

  2、配置环境变量

    vim /etc/profile

      export HBASE_HOME=/home/hadoop/hbase-1.2.3

      末尾添加bin到path:

        :$HBASE_HOME/bin

    source /etc/profile

  3、修改配置文件

    进入配置目录:cd /home/hadoop/hbase-1.2.3/conf

    vim hbase-env.sh

      export JAVA_HOME=/home/hadoop/jdk1.8.0_181

      export HBASE_MANAGES_ZK=false

    vim hbase.site.xml

      <configuration>

      <property>

        <name>hbase.rootdir</name>

        <value>hdfs://master:9000/hbase</value>

      </property>

      <property>

        <name>hbase.cluster.distributed</name>

        <value>true</value>

      </property>

      <property>

          <name>hbase.zookeeper.quorum</name>

          <value>master,slave1,slave2</value>

      </property>

      <property>

        <name>hbase.zookeeper.property.dataDir</name>

        <value>/home/hadoop/zookeeper-3.4.9</value>

      </property>

      </configuration>

    vim  regionservers

      slave1

      slave2

    说明:regionservers文件中列出了你希望运行的HRegionServer

  4、复制hbase-1.2.3到slave1、slave2

    scp -r /home/hadoop/hbase-1.2.3 slave1:/home/hadoop

    scp -r /home/hadoop/hbase-1.2.3 slave2:/home/hadoop

  5、启动hbase

    启动之前先要启动hadoop集群

    启动zookeeper(zkServer.sh start),注意:三台都要启动

    启动hbase

      /home/hadoop/hbase-1.2.3/bin/start-hbase.sh

    查看master进程:jps      

      2225 NameNode
      2564 ResourceManager
      4245 Jps
      4070 HMaster(启动hbase增加的)
      3048 QuorumPeerMain(启动zookeeper增加的)
      2413 SecondaryNameNode

    查看slave进程:jps  

      2057 DataNode
      2749 HRegionServer(启动hbase增加的)
      2367 QuorumPeerMain(启动zookeeper增加的)
      2895 Jps

    在浏览器中输入http://master:16010就可以在界面上看到hbase的配置了

  6、启动hbase shell

    hbase shell

    注:退出hbase shell:exit

      关闭hbase:stop-hbase.sh

 

 安装hive

  1、安装

    tar  -zxvf  /home/hadoop/download/apache-hive-2.1.0-bin.tar.gz  ..

  2、配置

      (1)配置环境变量:vim /etc/profile

        export $HIVE_HOME=/home/hadoop/apache-hive-2.1.0-bin

        添加path::$HIVE_HOME/bin

      重新编译:source /etc/profile

      测试:hive --version

      (2)修改hive-site.xml(在conf目录下)

<property>
 <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://10.10.0.1:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>root</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>root</value>
</property>

      说明:

        本配置主要是将数据库的元信息保存在关系型数据库mysql中,默认是保存在derby数据库。

        真机(win7)上安装mysql服务,用户名:root   密码:root ,最好在真机的mysql数据库上创建hive数据库,保存hive中创建的所有数据库的元信息,如果不创建的话,配置为自动创建。 

        下载mysql驱动mysql-connector-java-5.1.44.jar到hive目录下的子目录lib中。

       (3)初始化mysql元数据

          schematool -dbType mysql -initSchema     

     

3、启动 

    (1)先启动hdfs
      $HADOOP_HOME/sbin/start-all.sh
    (2)启动hive
      hive 

安装scala

  1、安装

    tar  -zxvf  /home/hadoop/download/scala-2.11.0.tgz  ..

  2、配置

    vim /etc/profile

      export $SCALA_HOME=/home/hadoop/scala-2.11.0

      添加path::$SCALA_HOME/bin

  3、启动

    scala

    退出scala shell::quit

 

安装spark

  1、安装

    tar  -zxvf  /home/hadoop/download/spark-2.3.0-bin-hadoop2.7.tgz  -C ..

  2、配置

    (1)配置环境变量

      vim /etc/profile

        export SPARK_HOME=/home/hadoop/spark-2.3.0-bin-hadoop2.7

        添加path::$SPARK_HOME/bin

      source /etc/profile

    (2)修改spark-env.sh($SPARK_HOME/conf)

      将spark-env.sh.template重命名为spark-env.sh

      vim spark-env.sh 

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181
        export SCALA_HOME=/home/hadoop/scala-2.11.0
        export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
        export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.3/etc/hadoop
        export SPARK_MASTER_IP=master
        export SPARK_WORKER_MEMORY=1024M

    (3)修改slaves

      vim slaves

        master

        slave1

        slave2

    (4)将配置好的spark目录复制到其他节点

      scp  -r  $SPARK_HOME  slave1:/home/hadoop/

      scp  -r  $SPARK_HOME  slave2:/home/hadoop/

  3、启动spark

    1、启动hadoop

      $HADOOP_HOME/sbin/start-all.sh

    2、启动spark

      $SPARK_HOME/sbin/start-all.sh

    3、web查看

      master:8080

  4、使用sbt打包运行spark程序

    (1)下载sbt-launch.jar放入安装目录(/home/hadoop/sbt)

    (2)创建shell脚本文件用于启动sbt打包程序

      文件名:/home/hadoop/sbt/sbt  

        SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
        java $SBT_OPTS -jar /home/hadoop/sbt/bin/sbt-launch.jar "$@"

      chmod -R 777 /home/hadoop/sbt/sbt(使该文件件可执行)

    (3)创建spark应用程序

    /root/sparkApp/src/main/scala/Hello.scala  

    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    import org.apache.spark.SparkConf

       object Hello{
      def main(args:Array[String]){
        val logFile="file:///tmp/txt1"
        val conf=new SparkConf().setAppName("my spark app")
        val sc=new SparkContext(conf)
        val logData=sc.textFile(logFile,2).cache()
        val numA=logData.filter(line=>line.contains("a")).count()
        val numB=logData.filter(line=>line.contains("b")).count()
        println("a:%s,b:%s".format(numA,numB))
      }
    }

    //统计txt1中文本中a,b出现的次数

     (4)创建应用程序信息文件(~/sparkApp/hello.sbt)

      name:="My Spark Project"
      version:="1.0"
      scalaVersion:="2.11.0"
      libraryDependencies+="org.apache.spark" %% "spark-core" % "1.6.0"

      用于声明应用程序信息及与spark的依赖关系

    (5)在应用程序的根目录下打包spark程序

      cd ~/sparkApp

      /home/hadoop/sbt/sbt package

    (6)使用spark-submit提交到spark上运行

      spark-submit --class "Hello" /root/sparkApp/target/scala-2.11/my-spark-project_2.11-1.0.jar

      结果:a:2,b:0

    

 

转载于:https://www.cnblogs.com/beast-king/p/9452490.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值