Spark-1.6.1 Hadoop-2.6.4 VMware Ubuntu 分布式集群搭建 全过程
本文从头开始零基础完全配置,适合小白。
本文在vmware中配置三台虚拟机,一台做Master,两台Worker,hadoop 和spark只需要在Master上配置,然后cp到worker上,包括配置文件。
Ubuntu基本环境配置
创建hadoop用户
在终端中输入
sudo useradd -m hadoop -s /bin/bash
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd hadoop
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
sudo adduser hadoop sudo
最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆。这个很重要,一定要切换到hadoop用户,涉及到后面的配置。
安装vim
首先更新apt
sudo apt-get update
因为后面要修改很多配置文件,有些用gedit比较方便,比如大块的copy,但在有些环境下vim更方便,有时也只能用vim,所以建议装。用的时候只要将gedit 和 vim互换即可。
sudo apt-get install vim
中间输入y即可
以上过程需在所有节点上配置(本文是有一台Master ,两台worker)
网络配置
点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet8 NAT模式 ->修改subnet ip
点击更改设置
选中VMnet8
点击NAT设置
设置子网IP:192.168.2.0 子网掩码:255.255.255.0 -> apply(应用) -> ok(确定)。其实都可以,只要在同一网段内即可
回到windows下检查 –> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet8 -> 属性 -> 双击IPv4
192.168.2.2 在网段内,可以可以。
在虚拟软件上 –My Computer -> 选中虚拟机 -> 右键 -> settings -> (网络适配器)network adapter -> 选择VMnet8
配置虚拟机IP地址
两种方式:
第一种:通过Linux图形界面进行修改(强烈推荐)
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.2.100 子网掩码:255.255.255.0 网关:192.168.2.1 -> apply
第二种:修改配置文件方式(屌丝程序猿专用)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.2.100" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.2.1" ###
改完后 reboot
三台都需要修改, IP地址同网段不同即可
本文用的是
192.168.2.100 Master
192.168.2.101 Slave1
192.168.2.102 Slave2
Linux 中查看节点 IP 地址的命令为 ifconfig
修改主机名
为了便于区分,可以修改各个节点的主机名(在终端标题、命令行中可以看到主机名,以便区分)
sudo vim /etc/hostname
按 i 进行 Insert 添加修改
添加Master即可,在其他两台机器上同样添加Slave1和Slave2即可。
保持并推出,先按esc,再按 :wq
命令修改自己所用节点的IP映射:
sudo vim /etc/hosts
127.0.0.1 localhost
192.168.2.100 Master
192.168.2.101 Slave1
192.168.2.102 Slave2
配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功
ping Master -c 3 # 只ping 3次,否则要按 Ctrl+c 中断
ping Slave1 -c 3
配置好后,所有机器都需要重启
SSH无密码登陆节点
首先安装SSH
sudo apt-get install openssh-server
安装后,可以使用如下命令登陆本机:
ssh localhost
SSH首次登陆会有提示,输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了,但是每次都要输密码比较麻烦,因此需要配置无密码登录。
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了
对三台机器都进行上述操作
接下来设置无密码登录,让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。
首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回车就可以
让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:
cat ./id_rsa.pub >> ./authorized_keys
完成后可执行 ssh Master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
这里解释下,scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop)。因为是烤给 Slave1 机器的hadoop用户。
接着在 Slave1 节点上,将 ssh 公匙加入授权:
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以删掉了
对于Slave2也进行同样操作
在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验
ssh Slave1
要推出,exit 即可。
在这里,推荐使用一款工具SecureCRT, 可以方便的登录
具体使用,就不在这里讨论了。
关闭防火墙
1、关闭ubuntu的防火墙
ufw disable
2、卸载了iptables
apt-get remove iptables
安装Java
1.下载JDK
本次选择的是 jdk-8u73-linux-x64
放到Download目录, 当然随意看喜好
2.创建新目录
sudo mkdir /usr/local/java
3.将下载到压缩包拷贝到java文件夹中
进入jdk源码包所在目录Download
解压压缩包,然后可以删除压缩包
cd Downloads
cp jdk-8u73-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar xvf jdk-8u73-linux-x64.tar.gz
sudo rm jdk-8u73-linux-x64.tar.gz
4.设置jdk环境变量
sudo gedit ~/.bashrc
添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
然后
source ~/.bashrc
让配置立即生效
5.最后检查是否生效
在终端输入
java -version
安装Scala
Scala 安装与Java 类似
1_下载压缩包
http://www.scala-lang.org/download/
2_建立目录,解压文件到所建立目录
sudo mkdir /usr/local/scala
tar zxvf scala-2.11.7.tgz -C /usr/local/scala
3_添加环境变量
sudo gedit ~/.bashrc
添加
export SCALA_HOME=/usr/local/scala/scala-2.11.7
export PATH=/usr/local/scala/scala-2.11.7/bin:$PATH
4.测试
scala -version
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL
让服务器启动时不要启动图形界面(Slaves节点 )
修改 /etc/X11/default-display-manager文件:
vim /etc/X11/default-display-manager
一般为空,若为空,则添加false,:wq 保存推出
值为/usr/sbin/gdm,则进入图形界面
安装Hadoop
下载 hadoop http://hadoop.apache.org/releases.html
本文用的是 hadoop-2.6.4.tar.gz , 据说 2.6.0的比较稳定,比较好
将 Hadoop 安装至 /usr/local/ 中:
sudo tar -zxf ~/Downloads/hadoop-2.6.4.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop:hadoop ./hadoop # 修改文件权限
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
伪分布式需要修改6个配置文件 ,文件位于/usr/local/hadoop/etc/hadoop/
用gedit 大块复制会比较方便
1. slaves
将文件中原来的 localhost 删除,添加内容:
Slave1
Slave2
2. hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
export HADOOP_HOME=/usr/local/hadoop
3. core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
4. hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/namesecondary</value>
</property>
</configuration>
5. mapred-site.xml
需要先重命名,默认文件名为 mapred-site.xml.template
mv mapred-site.xml.template mapred-site.xml
- 1
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</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>
6. yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
将hadoop添加到环境变量
gedit ~/.bashrc
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export SPARK_HOME=/usr/local/spark
export PATH=${SPARK_HOME}/sbin:$PATH
export PATH=${SPARK_HOME}/bin:$PATH
export SCALA_HOME=/usr/local/scala/scala-2.11.7
export PATH=/usr/local/scala/scala-2.11.7/bin:$PATH
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在Slave 上配置
配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行: //先开Slave 虚拟机
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop
scp ./hadoop.master.tar.gz Slave2:/home/hadoop
在 Slave1 节点上执行:
sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop:hadoop /usr/local/hadoop
同样,如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。
首次启动需要先在 Master 节点执行 NameNode 的格式化:
hdfs namenode -format # 首次运行需要执行初始化,之后不需要
启动hadoop
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程
在 Slave 节点可以看到 DataNode 和 NodeManager 进程
也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。
测试的例子,在http://www.powerxing.com/install-hadoop/ 中有介绍,此处不再赘述。
安装Spark
官网下载地址:http://spark.apache.org/downloads.html
需要下载预编译版本
下载后,执行如下命令进行安装:
sudo tar -zxf ~/Downloads/spark-1.6.1-bin-hadoop2.6.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-1.6.1-bin-hadoop2.6.tgz/ ./spark
sudo chown -R hadoop:hadoop ./spark
安装后,需要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,执行如下命令拷贝一个配置文件:
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
编辑 ./conf/spark-env.sh(gedit ./conf/spark-env.sh) ,在最后面加上如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
export SCALA_HOME=/usr/local/scala/scala-2.11.7
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.2.100
export SPARK_WORKER_INSTANCES=2
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=1
export SPARK_HOME=/usr/local/spark
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
cd conf/
cp slaves.template slaves
vim slaves
#insert
Slave1
Slave2
配置系统环境变量
加入
${SPARK_HOME}:bin
${SPARK_HOME}:sbin
修改spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
#加入
spark.executor.extraJavaOptions -XX:+PrintGCDetails -DKey=value -Dnumbers="one two three"
spark.eventLog.enabled true
spark.eventLog.dir hdfs://Master:9000/historyserverforSpark
spark.yarn.historySever.address Master:18080
spark.history.fs.logDirectory hdfs://Master:9000/historyserverforSpark
给Slave配置
tar -zcf ~/spark.master.tar.gz ./spark # 先压缩再复制
cd ~
scp ./spark.master.tar.gz Slave1:/home/hadoop
scp ./spark.master.tar.gz Slave2:/home/hadoop
在 Slave1 节点上执行(其他的也一样):
sudo rm -r /usr/local/spark # 删掉旧的(如果存在)
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop:hadoop /usr/local/spark
配置historyserverforSpark
hadoop dfs -rmr /historyserverforSpark
hadoop dfs -mkdir /historyserverforSpark
到此基本就已经配置完全了!大功告成!
来测试一下。
最后测试
首先启动hadoop
cd /usr/local/hadoop/sbin/
start-all.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
cd /usr.loacl/spark/sbin/
start-all.sh
./start-history-server.sh
./spark-submit --class org.apache.spark.examples.SparkPi --master spark://Master:7077 ../lib/spark-examples-1.6.1-hadoop2.6.0.jar 10
Spark-1.6.1 Hadoop-2.6.4 VMware Ubuntu 分布式集群搭建 全过程的更多相关文章
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- Hadoop分布式集群搭建
layout: "post" title: "Hadoop分布式集群搭建" date: "2017-08-17 10:23" catalog ...
- 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- Hadoop完全分布式集群搭建
Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...
- 大数据之Hadoop完全分布式集群搭建
1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...
- 基于Hadoop伪分布式集群搭建Spark
一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...
- spark完全分布式集群搭建
最近学习Spark,因此想把相关内容记录下来,方便他人参考,也方便自己回忆吧 spark开发环境的介绍资料很多,大同小异,很多不能一次配置成功,我以自己的实际操作过程为准,详细记录下来. 1.基本运行 ...
- Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)
本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...
随机推荐
- git merge了错误分支,如何优雅的回退到merge前的状态?
git merge了错误分支,如何优雅的回退到merge前的状态? 没push的话 git reset --hard (a分支5点那个时候commit之后的sha1) 然后重新 git merge
- Java8接口的默认方法
项目实战 实现上图接口的实现类有很多,其中有些实现类已经在生成环境了,现在需要新增几个实现类,都需要有回调方法,所以在接口中添加了一个回调的默认方法,如果使用接口的普通方法就得改所有实现了接口的实现类 ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 介绍)--学习笔记
2.6.6 RabbitMQ -- Masstransit 介绍 Masstransit 是什么 Quickstart 消息 Message Masstransit 是什么 Masstransit 是 ...
- LInux维护一:VirtualMachine磁盘扩容
- Laya 踩坑日记-BitmapFont 不显示空格
项目中有用到艺术字,美术通过 bmfont64 将字体导给我了,结果发现在应用上 空格不显示 如图: 今天去深究了一下这个问题,发现是底层没封装好,然后自己改了一下下面是改过的 BitmapFont ...
- Token验证的流程及如何准确的判断一个数据的类型
Token验证的流程: 1,客户端使用用户名跟密码请求登录:2,服务端收到请求,去验证用户名与密码:3,验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端:4,客户端收到 T ...
- 计算机考研复试真题 abc
题目描述 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的所有a.b.c的值. 输入描述: 题目没有任何输入. 输出描述: 请输出所有满足题目条 ...
- 【Spring】Spring JdbcTemplate
Spring JdbcTemplate 文章源码 JdbcTemplate 概述 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装.Spring 框架提供了很多的操 ...
- Ubuntu 18.04.4 系统优化
1 ) 允许root远程登录: sudo apt install vim git net-tools openssh-server sudo vim /etc/ssh/sshd_config .... ...
- 虚拟机linux共享文件夹
linux共享文件夹问题 1. 初配置 2. 挂载 018.7.8 为了实现win7与VMware中linux文件夹共享很花费了一些时间,但终成正果 1. 初配置 虚拟机设置->选项->共 ...