Hadoop与Spark平台搭建心得

近来学习Spark,作为Linux小白,在Hadoop与Spark平台搭建过程中,产生了许多之前未预料的错误。经过锲而不舍的网上查找文章和不断尝试,终于解决了所有的错误,成功将Spark平台运行起来。为了防止今后的遗忘,也为了给像我一样的小白提供搭建Hadoop与Spark平台的经验心得,特结合网上相关文章写下此文章。

本文采用系统和软件版本如下:

Ubuntu16.04 64位

JDK 8u131

Hadoop2.8.0

Scala2.11.0

Spark 2.1.1

一、Hadoop与spark平台简介

1.Hadoop:

Hadoop是由Apache基金会所开发的分布式系统基础架构,实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS;Hadoop框架最核心设计就是HDFS和MapReduce,HDFS为海量数据提供了存储,MapReduce为海量数据提供了计算。

Hadoop要解决的问题:海量数据的存储(HDFS)、海量数据的分析(MapReduce)和资源管理调度(YARN)。

Hadoop主要作用于分布式。

2.Spark:

Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL、Spark Streaming、MLLib和GraphX等组件,也就是BDAS(伯克利数据分析栈),这些组件逐渐形成大数据处理一站式解决平台。从各方面报道来看Spark抱负并非池鱼,而是希望替代Hadoop在大数据中的地位,成为大数据处理的主流标准,不过Spark还没有太多大项目的检验,离这个目标还有很大路要走。

Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集(Scala 提供一个称为 Actor 的并行模型,其中Actor通过它的收件箱来发送和接收非同步信息而不是共享数据,该方式被称为:Shared Nothing 模型)。在Spark官网上介绍,它具有运行速度快、易用性好、通用性强和随处运行等特点。

二、Hadoop平台搭建

1.下载

首先在Hadoop官网下载Hadoop安装包http://hadoop.apache.org/,下载的文件为tar压缩包形式。

*Spark对于Hadoop的版本有一定要求,若要同时搭建Spark平台,需参照Spark要求下载对应的Hadoop版本。

2.创建Hadoop用户

如果你安装Ubuntu的时候不是用的”Hadoop”用户,那么需要增加一个名为Hadoop的用户

首先按ctrl+alt+t打开终端窗口,输入如下命令创建新用户:

sudo useradd –m Hadoop –s /bin/bash

这条命令创建了可以登录的hadoop用户,并使用/bin/bash作为shell。

接着使用如下命令设置密码,可简单设置为hadoop,按提示输入两次密码:

sudo passwd hadoop

为hadoop用户增加管理员权限,方便部署。

sudo adduser hadoop sudo

最后注销当前用户,返回登录界面。在登录界面中选择刚创建的hadoop用户进行登录。

3.更新apt+安装ssh

首先更新apt,执行如下命令:

sudo apt-get update

后续需要更改一些配置文件,建议安装vim

sudo apt-get install vim

安装软件时若需要确认,在提示处输入y即可。

 

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server

然后将密钥加入到授权中,配置成SSH无密码登录

cd ~/.ssh/                      # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa                # 会有提示,都按回车就可以

cat./id_rsa.pub >> ./authorized_keys # 加入授权

此时再用ssh localhost命令,无需输入密码就可以直接登录

4.安装JAVA环境

JAVA安装环境还是推荐安装OracleJDK,网上有教程说可以直接通过apt来安装OpenJDK。经过实际操作,OpenJDK-9-jdk的安装错误迭出,至今我尚未找到完美的解决方案,本意是为了图方便,结果反倒造成了不必要的麻烦。

JDK的安装也并不是十分麻烦,首先还是要到ORACLE官网进行下载,注意下载系统对应的版本。

在usr目录下建立java安装目录

cd /usr

sudo mkdir java

解压jdk至目标安装目录

sudo tar –zxvfjdk-8u131-linux-x64.tar.gz –C /usr/java

为了方便设置JAVA_HOME,将文件夹进行重命名

cd/usr/java

sudo mv jdk1.8.0_131jdk

接下来编辑配置文件,配置环境变量,配置文件为/etc/profile,我们采用vim编辑器进行编辑

sudo vim/etc/profile

添加如下内容:

export JAVA_HOME=/usr/java/jdk

export CLASSPATH=$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin

这里需要注意,PATH路径中的分隔符为英文冒号:

最后,重启机器或执行命令:source /etc/profile

source /etc/profile

可用java –version查看安装情况

5.安装Hadoop

将Hadoop安装包解压到/usr/local文件夹下

sudo tar –zxvfhadoop-2.8.0.tar.gz –C /usr/local

同样为了配置环境变量的方便,对解压后的文件夹进行重命名

sudo /usr/local

sudo mv hadoop-2.8.0hadoop

接下来编辑配置文件,配置环境变量

sudo vim/etc/profile

添加如下内容:

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

最后,重启机器或执行命令:source /etc/profile

可用hadoop version查看安装情况

hadoop version

Hadoop 2.8.0

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git-r 91f2b7a13d1e97be65db92ddabc627cc29ac0009

Compiled by jdu on 2017-03-17T04:12Z

Compiled with protoc 2.5.0

From source with checksum60125541c2b3e266cbf3becc5bda666

This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.0.jar

6.配置hadoop文件

hadoop的配置文件方案,网上的教程版本不一,因而在这里走了许多弯路,经过多次尝试,终于找到了适用于hadoop 2.8.0的配置文件方案

进入配置文件目录:

cd/usr/local/hadoop/etc/hadoop

修改core-site.xml:

  fs.defaultFS

    hdfs://127.0.0.1:9000

  hadoop.tmp.dir

  /home/hadoop/tmp/

修改hdfs-site.xml:

dfs.replication

 1

这里指定dfs的备份目录,单机用1份就行

修改mapred-site.xml

 

 mapreduce.framework.name

   yarn

 

修改yarn-site.xml

  yarn.resourcemanager.hostname

    localhost

 yarn.nodemanager.aux-services

   mapreduce_shuffle

*7.权限调整

这是很关键的一步,在按照网上其他教程安装并配置后,启动Spark各种报错,经过艰难的挣扎,终于发现是权限捣的鬼,而这一步网上教程居然一句也没提,真是……

所以要记住,尤其是Linux新手,权限的问题一定要打起十二分的注意,留心留心再留心

首先,将Hadoop与Spark的安装目录赋予读写权限,我采取直接一步到位的方式,赋予全部权限

sudochmod -R 777 /usr/local/hadoop

sudochmod -R 777 /usr/local/spark

接下来,由于Spark会利用HDFS进行读写操作,因而对HDFS也同样需要赋予权限,能提到这个事情的文章就更少了,也是困扰我时间最长的地方

不同版本Hadoop的命令格式不一样,实测2.8.0如下命令可用:

hdfs dfs-chmod -R 777 /

8.启动Hadoop

首先对hdfs进行格式化操作

hdfs namenode –format

启动Hadoop,网上许多教程写的是执行start-all.sh,但目前Hadoop推荐执行start-dfs.sh

sudo $HADOOP_HOME/sbin/start-dfs.sh

停止Hadoop可执行stop-dfs.sh

sudo $HADOOP_HOME/sbin/stop-dfs.sh

Hadoop运行后可使用jps命令查看,得到结果:

6577NameNode

27002 Jps

6927SecondaryNameNode

6735DataNode

注:如果开启了root用户,namenode等节点默认在root用户下启动,因而需在root用户下查看,输入su root切换

如果提示jps未安装,可输入source /etc/profile重新设置环境变量

三、Spark平台搭建

1.安装Scala

网上有的教程并没有安装Scala这一步骤,但由于Spark编程最契合的语言莫过于Scala,因而还是推荐安装Scala并采用Scala进行Spark的操作

将Scala安装包解压到/usr/local

sudo tar –zxvfscala-2.11.0.tgz –C /usr/local

同样,为了方便配置环境变量,将解压后的目录进行重命名

cd/usr/local

sudo mv scala-2.11.0 scala

类似的,也要配置环境变量sudo vim /etc/profile

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$SCALA_HOME/bin

保存并更新/etc/profile

source/etc/profile

运行scala –version查看是否配置成功

Scala code runner version 2.11.0 -- Copyright 2002-2013, LAMP/EPFL

2.安装Spark

解压Spark安装包到/usr/local

sudo tar –zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local

将解压目录重命名

cd/usr/local

sudo mvspark-2.1.1-bin-hadoop2.7 spark

配置环境变量,最终总体环境变量如下:

export JAVA_HOME=/usr/java/jdk

export CLASSPATH=$JAVA_HOME/lib/

export SCALA_HOME=/usr/local/scala

export HADOOP_HOME=/usr/local/hadoop

export SPARK_HOME=/usr/local/spark

export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$SPARK_HOME/bin

保存并更新/etc/profile

source /etc/profile

3.配置Spark

在spark安装目录的conf子目录下复制并重命名spark-env.sh.template为spark-env.sh

cd$SPARK_HOME/conf

sudo cp spark-env.sh.template spark-env.sh

sudo vim spark-env.sh

在spark-env.sh中添加:

export JAVA_HOME=/usr/java/jdk

export SCALA_HOME=/usr/local/scala

export SPARK_MASTER_IP=localhost

export SPARK_WORKER_MEMORY=1G  #内存大小可根据自己电脑配置进行设置

export  HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/

export SPARK_LOCAL_DIRS=/home/hadoop/data/sparktmp

4.启动Spark-Shell

cd $SPARK_HOME/bin

sudo./spark-shell

出现如下界面,表示Spark-Shell已成功启动


 


你可能感兴趣的:(Hadoop与Spark平台搭建心得)