本文从头开始零基础完全配置,适合小白。

本文在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 分布式集群搭建 全过程的更多相关文章

  1. Hadoop上路-01_Hadoop2.3.0的分布式集群搭建

    一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...

  2. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  3. Hadoop分布式集群搭建

    layout: "post" title: "Hadoop分布式集群搭建" date: "2017-08-17 10:23" catalog ...

  4. 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  5. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  6. Hadoop完全分布式集群搭建

    Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...

  7. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  8. 基于Hadoop伪分布式集群搭建Spark

    一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...

  9. spark完全分布式集群搭建

    最近学习Spark,因此想把相关内容记录下来,方便他人参考,也方便自己回忆吧 spark开发环境的介绍资料很多,大同小异,很多不能一次配置成功,我以自己的实际操作过程为准,详细记录下来. 1.基本运行 ...

  10. Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)

    本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...

随机推荐

  1. psql: could not connect to server: No such file or directory

    postgresql报错: psql: could not connect to server: No such file or directory         Is the server run ...

  2. 新建表后,在sqlserver manager中使用显示引用对象无效

    编辑>intelliSense(I)>刷新本地缓存.

  3. 阿里面试:MySQL如何设计索引更高效?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  4. Spark学习进度10-DS&DF基础操作

    有类型操作 flatMap 通过 flatMap 可以将一条数据转为一个数组, 后再展开这个数组放入 Dataset val ds1=Seq("hello spark"," ...

  5. (解决)easypoi模板导出多个excel文件并压缩

    目录 easypoi版本--3.1.0 实现代码 后语 easypoi版本--3.1.0 实现代码 public void export(HttpServletResponse response, H ...

  6. 一次snapshot迁移引发的Hbase RIT(hbase2.1.0-cdh6.3.0)

    1. 问题起因 通过snapshot做跨集群数据同步时,在执行拷贝脚本里没有指定所有者及所有组,导致clone时没有权限,客户端卡死.master一直报错,经过一系列操作后,导致RIT异常. 2. 异 ...

  7. 【Java】集合框架(List Set Map)

    文章目录 集合框架 List(列表) ArrayList 案例 Set HashSet 案例 iterator(迭代器) Map HashMap 案例 集合总结 参考资料 重新搞一波 复习巩固 简单记 ...

  8. ctfshow—web—web2

    打开靶机,根据提示是SQL注入 打开后看到登录窗口 方法一.手工注入 抓取数据包 开始SQL注入测试 利用万能密码,登录成功 查看回显位置 查询数据库 查询数据库内数据表 如果想整齐一点显示可以添加g ...

  9. os.walk() 遍历目录下的文件夹和文件

    os.walk(top, topdown=True, onerror=None, followlinks=False) top:顶级目录 os.walk()返回一个三元tupple(dirpath, ...

  10. [usaco2008 Oct]Pasture Walking 牧场旅行

    题目描述 n个被自然地编号为1..n奶牛(1<=n<=1000)正在同样被方便的编号为1..n的n个牧场中吃草.更加自然而方便的是,第i个奶牛就在第i个牧场中吃草. 其中的一些对牧场被总共 ...