为了将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做开发,在集群上运行整个集群任务咯!

Ubuntu14.04或16.04下安装JDK1.8+Scala+Hadoop2.7.3+Spark2.0.2的更多相关文章

  1. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  2. 在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法

    在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法,我刚开始因为不太会用linux命令,所以一直依赖于python 的pip命令,可是怎么都 ...

  3. buntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)转

    配置完成后: sudo apt-get update 安装和删除软件: sudo apt-get install sudo apt-get remove buntu14.04和16.04官方默认更新源 ...

  4. CentOS 6系统下安装 JDK1.6

    CentOS 6系统下安装 JDK1.6 JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的 ...

  5. centos 7下安装jdk1.8

    本篇文章主要介绍在centos7 环境下安装jdk1.8并配置环境变量. 安装步骤 1.下载网址   https://www.oracle.com/technetwork/java/javase/do ...

  6. Linux下安装jdk1.7

    Linux下安装jdk1.7 1.进入 /usr/local下创建一个文件夹software,用来存放安装包. [root@192 ~]# cd /usr/local/ 2.创建文件夹 [root@1 ...

  7. Change default network name (ens33) to old “eth0” on Ubuntu 18.04 / Ubuntu 16.04

    Change default network name (ens33) to old “eth0” on Ubuntu 18.04 / Ubuntu 16.04 By Raj Last updated ...

  8. CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档

    ----------------CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档----------------------- [JDK1.7安 ...

  9. linux: ubuntu 14.04 和16.04 快速下载

    由于官网服务器在国外,下载速度奇慢,所以我们可以利用阿里云镜像下载ubuntuubuntu 14.04:http://mirrors.aliyun.com/ubuntu-releases/14.04/ ...

随机推荐

  1. SAP 出库单新版

    *&---------------------------------------------------------------------* *& Report  ZSDR045 ...

  2. LeetCode 36 Valid Sudoku

    Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...

  3. 常用类string的用法

    在Java中string是我们用的很多的一种类,下面就来说说string类中经常用到的一些方法. 1.string与数组相关的方法: 比如:string str = "fsafdsafdas ...

  4. superSlider实现美女轮播图

    superSlider实现美女轮播图 <!DOCTYPE html><html lang="en"><head><meta charset ...

  5. java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  6. 1280*720P和1920*1080P的视频在25帧30帧50帧60帧时的参数

  7. 数据分析(8):Series介绍

    Series Series由一组数据及索引组成 索引 采用默认索引 data = pd.Series([4, 3, 2, 1]) 自定义索引 data = pd.Series([4, 3, 2, 1] ...

  8. ListView中的setOnScrollListener

    ListView是Android中最常用的控件之一,随着时代发展,RecyclerView有取代它的趋势,但是在一些老代码中,ListView依然扮演着重要的作用.项目中遇到一个需求,需要监听List ...

  9. Puppet自动化部署-安装及配置(3)

    本文介绍Puppet Master及Agent相关的安装及配置. 一. 官网下载Puppet安装YUM源 [root@puppet-master ~]# rpm -ivh https://yum.pu ...

  10. npm scripts构建

    管道(|)运算符会将一个命令的输出以流的方式作为另一个命令的输入. 重定向(>)运算符则会将输出重定向到文件. < 将文件内容输入到一个命令 在Unix中,还可以通过“&”运算符同 ...