zoukankan      html  css  js  c++  java
  • Ubuntu14.04或16.04下安装JDK1.8+Scala+Hadoop2.7.3+Spark2.0.2

    为了将Hadoop和Spark的安装简单化,今日写下此帖。

    首先,要看手头有多少机器,要安装伪分布式的Hadoop+Spark还是完全分布式的,这里分别记录。

    1. 伪分布式安装

    伪分布式的Hadoop是将NameNode,SecondaryNameNode,DataNode等都放在一台机器上执行,Spark同理,一般用于开发环境。

    1.1 准备工作

    系统准备:一台Ubuntu16.04机器,最好能够联网

    准备好四个安装包:jdk-8u111-linux-x64.tar.gz,scala-2.12.0.tgz,hadoop-2.7.3.tar.gz,spark-2.0.2-bin-hadoop2.7.tgz

    1.2 配置SSH免密码登录

    SSH是集群不同机器间实现自由数据传输通信的根本保障。安装完成后试试ssh到本机是否需要密码即可。

    sudo apt-get install ssh openssh-server
    # 安装SSH
    
    ssh-keygen -t rsa -P ""
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    # 配置秘钥
    
    service ssh start
    # 启动SSH服务
    

    1.3 解压四个软件包并配置环境变量

    解压四个软件包:

    tar -zxvf jdk-8u111-linux-x64.tar.gz
    sudo mv jdk1.8.0_111 /usr/lib/
    # 解压JDK并移动到/usr/lib/下
    
    tar -zxvf scala-2.12.0.tgz
    sudo mv scala-2.12.0 /usr/lib/
    # 解压scala并移动到/usr/lib/下
    
    tar -zxvf hadoop-2.7.3.tar.gz
    # 解压hadoop包
    
    tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
    # 解压spark包
    

    配置环境变量:

    当前用户的环境变量位于~/.profile,root用户的环境变量位于/etc/profile。这里我们将环境变量按当前用户配置。vim ~/.profile

    vim ~/.profile
    # 打开环境变量
    
    # 添加下面的变量
    export JAVA_HOME=/usr/lib/jdk1.8.0_111
    export SCALA_HOME=/usr/lib/scala-2.12.0
    export HADOOP_HOME=/home/user/hadoop-2.7.3
    export SPARK_HOME=/home/user/spark-2.0.2-bin-hadoop2.7
    export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    # 保存后使其立即生效
    source ~/.profile
    

      

    1.4 配置Hadoop

    需要配置三个文件:core-site.xml,mapred-site.xml,hdfs-site.xml。

    在core-site.xml中添加如下信息:

    vim hadoop-2.7.3/etc/hadoop/core-site.xml
    # 打开文件
    
    <configuration>
        <property>
           <name>hadoop.tmp.dir</name>
           <value>file:/home/user/hadoop/tmp</value>
           <description>Abase for other temporary directories.</description>
        </property>
        <property>
           <name>fs.defaultFS</name>
           <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    

      

     在mapred-site.xml中添加如下信息:

    cp hadoop-2.7.3/etc/hadoop/mapred-site.xml.template hadoop-2.7.3/etc/hadoop/mapred-site.xml
    # 复制一份
    
    vim hadoop-2.7.3/etc/hadoop/mapred-site.xml
    # 打开文件
    
    <configuration>
       <property>
          <name>mapred.job.tracker</name>
          <value>localhost:9001</value>
       </property>
    </configuration>
    

      

     在hdfs-site.xml中添加如下信息,其中replication是机器数量,此处为1,user为当前用户名:

    vim hadoop-2.7.3/etc/hadoop/hdfs-site.xml
    # 打开文件
    
    <configuration>
       <property>
          <name>dfs.replication</name>
          <value>1</value>
       </property>
       <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:/home/user/hadoop/tmp/dfs/name</value>
       </property>
       <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:/home/user/hadoop/tmp/dfs/data</value>
       </property>
    </configuration>
    

    如果在启动Hadoop时找不到环境变量,可以在hadoop-2.7.3/etc/hadoop/hadoop-env.sh中明确:export JAVA_HOME=/usr/lib/jdk1.8.0_111

    1.5 配置Spark

    Spark只需要配置spark-env.sh文件。

    vim /home/user/spark-2.0.2-bin-hadoop2.7/conf/spark-env.sh
    # 打开文件
    
    export JAVA_HOME=/usr/lib/jdk1.8.0_111
    export SCALA_HOME=/usr/lib/scala-2.12.0
    export SPARK_MASTER_HOST=localhost #单机下配置为localhost
    export HADOOP_CONF_DIR=/home/user/hadoop-2.7.3/etc/hadoop/ #hadoop配置目录
    export SPARK_WORKER_MEMORY=8g #给spark分配8G内存
    export SPARK_WORKER_CORES=16 #允许spark以16核并行运算
    # 配置项很多,请参考文件中的提示
    

      

    1.6 启动Hadoop和Spark

    先格式化hadoop的HDFS(分布式文件系统),这是必要的步骤,否则NameNode无法启动。但也不需要每次启动Hadoop时都格式化,否则会造成Data和Name不兼容,使得DataNode无法启动,若出现这种情况,删掉tmp/data/current/下的VERSION文件。重新格式化HDFS即可。

    启动Hadoop和Spark命令为:

    $HADOOP_HOME/bin/hdfs namenode -format
    # 格式化HDFS
    $HADOOP_HOME/sbin/start-all.sh # 启动Hadoop
    $SPARK_HOME/sbin/start-all.sh # 启动Spark

    启动后,输jps命令,若Hadoop的DataNode,NameNode,SecondaryNameNode,***Manager都启动,Spark的Master和Worker都启动,则集群成功启动,缺一不可。

    此时,访问http://localhost:50070可访问Hadoop集群Web任务查看页面,访问http://localhost:8080可访问Spark集群Web任务查看页面。

    注意:如果装的是双系统,ubuntu访问ntfs盘符可以使用这条命令激活:ntfsfix /dev/sda5

    2. 完全分布式安装

    顾名思义,完全分布式安装是真正的集群部署,一般用于生产环境。

    2.1 准备工作

    系统准备:一台Ubuntu16.04机器作为master(ip:192.168.1.1),最好能够联网;1台及其以上Ubuntu16.04机器作为slave节点(ip:192.168.1.2 ...)

    准备好四个安装包:jdk-8u111-linux-x64.tar.gz,scala-2.12.0.tgz,hadoop-2.7.3.tar.gz,spark-2.0.2-bin-hadoop2.7.tgz

    2.2 配置SSH免密码登录

    SSH是集群不同机器间实现自由数据传输通信的根本保障。安装完成后试试ssh到本机是否需要密码即可。

    此处步骤与1.2中相同,但是要将master上的RSA秘钥拷贝到其他机器,实现机器间自由访问。

    scp ~/.ssh/id_rsa.pub user@slave01:/home/user/
    # 远程拷贝RSA秘钥
    
    ssh slave01;
    # 登录slave01
    mkdir ~/.ssh;cat ~/id_rsa.pub >> ~/.ssh/authorized_keys;exit;
    # 将秘钥生成公钥并退出
    ssh slave11;
    # 重新连接看是否需要密码,自动登录则成功
    

    依次类推,对所有的slave节点做相同操作,最后实现master到任意slave节点的SSH无密码登录。

    此外,我们还需要对每台机器上的hosts文件做配置,以实现SSH到hostname即可访问机器,无需显式IP地址。

    sudo vim /etc/hosts
    # 打开hosts
    
    # 存入下面的IP与hostname映射
    192.168.1.1       master
    192.168.1.2       slave01
    192.168.1.3       slave02
    192.168.1.4       slave03
    ...
    

    依次类推,对所有的slave节点做相同操作。

    2.3 解压四个软件包并配置环境变量

    在master主节点机器上解压四个软件包和配置环境变量,与1.3相同,不同的是,还需要通过scp命令将配置好的jdk和scala整体拷贝到其他从节点。

    2.4 配置Hadoop

    需要配置三个文件:core-site.xml,mapred-site.xml,hdfs-site.xml,slaves。

    前三个与1.4都相同,只需将localhost改成master(主节点的hostname名),replication改成具体的机器个数。

    最后,还需要通过scp命令将配置好的hadoop整体拷贝到其他从节点。

    2.5 配置Spark

    Spark只需要配置spark-env.sh文件,这一步与1.5相同。最后,通过scp命令将配置好的spark整体拷贝到其他从节点。

    2.6 启动Hadoop和Spark

    在主节点上启动hadoop和spark,通过jps验证是否成功启动集群。

    到此,您就可以在单机上用Eclipse或Intellij做开发,在集群上运行整个集群任务咯!

  • 相关阅读:
    chrome:禁用缓存
    datatables:如何禁用一列的排序
    springboot:集成fastjson(教训)
    eclipse:显示堆内存
    模板, 保存&发布
    动画
    配色
    图示 Smart-Art
    常用快捷键 & BLOG & Website
    图表
  • 原文地址:https://www.cnblogs.com/shixiangwan/p/6159299.html
Copyright © 2011-2022 走看看