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做开发,在集群上运行整个集群任务咯!
Ubuntu14.04或16.04下安装JDK1.8+Scala+Hadoop2.7.3+Spark2.0.2的更多相关文章
- 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 ...
- 在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法
在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法,我刚开始因为不太会用linux命令,所以一直依赖于python 的pip命令,可是怎么都 ...
- buntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)转
配置完成后: sudo apt-get update 安装和删除软件: sudo apt-get install sudo apt-get remove buntu14.04和16.04官方默认更新源 ...
- CentOS 6系统下安装 JDK1.6
CentOS 6系统下安装 JDK1.6 JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的 ...
- centos 7下安装jdk1.8
本篇文章主要介绍在centos7 环境下安装jdk1.8并配置环境变量. 安装步骤 1.下载网址 https://www.oracle.com/technetwork/java/javase/do ...
- Linux下安装jdk1.7
Linux下安装jdk1.7 1.进入 /usr/local下创建一个文件夹software,用来存放安装包. [root@192 ~]# cd /usr/local/ 2.创建文件夹 [root@1 ...
- 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 ...
- CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档
----------------CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档----------------------- [JDK1.7安 ...
- linux: ubuntu 14.04 和16.04 快速下载
由于官网服务器在国外,下载速度奇慢,所以我们可以利用阿里云镜像下载ubuntuubuntu 14.04:http://mirrors.aliyun.com/ubuntu-releases/14.04/ ...
随机推荐
- SAP 出库单新版
*&---------------------------------------------------------------------* *& Report ZSDR045 ...
- LeetCode 36 Valid Sudoku
Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...
- 常用类string的用法
在Java中string是我们用的很多的一种类,下面就来说说string类中经常用到的一些方法. 1.string与数组相关的方法: 比如:string str = "fsafdsafdas ...
- superSlider实现美女轮播图
superSlider实现美女轮播图 <!DOCTYPE html><html lang="en"><head><meta charset ...
- java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
- 1280*720P和1920*1080P的视频在25帧30帧50帧60帧时的参数
- 数据分析(8):Series介绍
Series Series由一组数据及索引组成 索引 采用默认索引 data = pd.Series([4, 3, 2, 1]) 自定义索引 data = pd.Series([4, 3, 2, 1] ...
- ListView中的setOnScrollListener
ListView是Android中最常用的控件之一,随着时代发展,RecyclerView有取代它的趋势,但是在一些老代码中,ListView依然扮演着重要的作用.项目中遇到一个需求,需要监听List ...
- Puppet自动化部署-安装及配置(3)
本文介绍Puppet Master及Agent相关的安装及配置. 一. 官网下载Puppet安装YUM源 [root@puppet-master ~]# rpm -ivh https://yum.pu ...
- npm scripts构建
管道(|)运算符会将一个命令的输出以流的方式作为另一个命令的输入. 重定向(>)运算符则会将输出重定向到文件. < 将文件内容输入到一个命令 在Unix中,还可以通过“&”运算符同 ...