Ubuntu搭建 Spark、Hive、Hadoop+yarn

操作系统:Ubuntu 16.04.12

虚拟机:VMware® Workstation 16 Pro 16.0.0

JDK:1.8.0_282

Hadoop: hadoop-2.7.5    Index of /dist/hadoop/common

Spark: spark-2.4.7-bin-hadoop2.7   Downloads | Apache Spark

Hive:apache-hive-2.3.8  https://mirrors.bfsu.edu.cn/apache/hive/

一、配置SSH

配置SSH实现免密登录,hadoop、spark等在master机器上安装好了之后直接通过scp分发给slave机器比较方便。

ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

执行上面第二行之后可以实现在本机上ssh登录不需要密码。对所有机器都执行这两条命令

我们需要用master机器登录slave机器或者免密传输文件,此时需要将master机器的公钥也就是id_rsa.pub文件先传到slave机器上,然后在执行上述第二条命令。然后使用 ssh 用户名@机器名 尝试是否可以免密登录。

二、集群准备

1.开启三台ubuntu机器,可以使用vm的克隆功能直接克隆两台一样的机器

2.修改三台机器的hosts和hostname文件:

修改hostname文件:

sudo nano /etc/hostname

 你把你要当作master机器的机器取名为master,剩下的机器分别起名为slave1、slave2...

修改hosts文件:

 通过以下命令查询三台机器的ip地址,然后修改hosts

ifconfig
sudo nano /etc/hosts

格式如图第二行注释掉,下面加上  ip地址+空格+对应机器名

三、安装Hadoop

按照上文给出的地址下载压缩包在master机器上解压,如果使用命令下载会放到 /usr/local/ 这个文件夹下面。

但是我当时安装的时候就放到了/home/jamjar目录下,jamjar为我的用户名,以下不再提示。

1.修改hadoop-env.sh 进入安装目录,/etc/hadoop

配置hadoop-env.sh :

将其中 

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"   

修改为:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.secur$
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" 

配置yarn-env.sh

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" 

配置slave

在slave文件中加入你的slave机器的ip或者机器名即可如slave1 slave2 换行分隔

配置core-site.xml

配置如下:

<configuration>
  <property>
     <name>hadoop.tmp.dir</name>
<value>/home/jamjar/hadoop-2.7.5/etc/hadoop/hdfs/directory</value>
    <description>A base for other temporary directories.</description>
  </property>
  <property>
     <name>fs.default.name</name>
     <value>hdfs://master:8020</value>
  </property>
</configuration>

其中hadoop.tmp.dir的hadoop路径部分要写自己的路径名

配置hdfs-site.xml

<configuration>

    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>master:9001</value>
     </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/home/jamjar/hadoop-2.7.5/etc/hadoop/hdfs/yarn_model/name</value>
     </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/jamjar/hadoop-2.7.5/etc/hadoop/hdfs/yarn_model/data</value>
     </property>
     
   <property>
     <name>dfs.replication</name>
     <value>1</value>
    </property>

</configuration>

配置mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
 

配置yarn-site.xml

<configuration>
    <property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
    </property>

    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8035</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>

2.添加环境变量

cd
nano .bashrc

export HADOOP_HOME=/home/jamjar/hadoop-2.7.5/
export PATH=$PATH:$HADOOP_HOME/bin

注意修改HADOOP_HOME为你的地址

3.将配置好的hadoop文件夹分发到slave机器上

4.开启hadoop服务

进入/home/jamjar/spark-2.4.7-bin-hadoop2.7/sbin

./start_dfs.sh(./stop_dfs.sh为关闭)

./start_yarn.sh

注意下面Capacity要一直保持有容量,如果开启失败的话会出现0

以上yarn模式的hadoop已经开启了。

三、安装Spark

安装spark的方式和安装hadoop类似,我放的文件夹位置也和hadoop在同一层。

1.配置conf文件夹中的spark-env.sh 如下

export SCALA_HOME=/home/jamjar/scala-2.11.12
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/home/jamjar/hadoop-2.7.5/
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
SPARK_LOCAL_DIRS=/home/jamjar/spark-2.4.7-bin-hadoop2.7/examples/jars
export SPARK_HISTROY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplication=30"
SPARK_DRIVER_MEMORY=1G

其中export SPARK_HISTROY_OPTS是配置history服务的。

2.配置slave文件,和hadoop一样

3.配置spark-defaults.conf

spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:8020/directory

使用历史服务需要在hdfs上建/directory文件夹

执行命令:

hadoop fs mkdir -p /directory

4.启动spark和历史服务

进入sb文件夹 ./start-all ,./start-history-server.sh

如果启动了yarn模式可以浏览器输入地址:master:8088查看,如果没有用yarn模式进入master:8080

分别得到如下页面,使用yarn

未使用yarn:

进入master:18080可以查看历史记录并且下载log

提供两个submit脚本:

使用yarn模式: 

./spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
../examples/jars/spark-examples_2.11-2.4.7.jar \
10

其中deploy-mode 可以为cluster和client,client提供个人调试使用,cluster为一般业务场景应用,但是注意cluster上是看不到你程序的打印输出的!

不用yarn模式:

./spark-submit --class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
../examples/jars/spark-examples_2.11-2.4.7.jar 10

三、安装HIVE

注意安装HIVE库版本,一般HIVE版本的开头数字和Hadoop版本一致,安装Yarn 2.x版本可以参考这篇CSDN写的很好

1.下载hive压缩包,解压缩

2.配置环境变量(最下面两行)

export HADOOP_HOME=/home/jamjar/hadoop-2.7.5/
export PATH=$PATH:$HADOOP_HOME/bin

export SPARK_HOME=/home/jamjar/spark-2.4.7-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin


export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

3.修改hadoop 文件夹里的core-site.xml,添加如下

<!-- hive. -->
<property>
 <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

4.安装Mysql:参考厦门大学大数据实验室文章:

Ubuntu安装MySQL及常用操作_厦大数据库实验室博客

5.下载驱动 mysql-connector-java-5.xx,解压后将jar包拷贝到HIVE目录下的lib文件夹中

MySQL :: Download Connector/J

mv mysql-connector-java-5.1.48.jar $HIVE_HOME/lib

6.mysql建立提供hive使用的database并赋权限

进入mysql后输入:

create database metastore;
grant all on metastore.* to hive@'%'  identified by 'hive';
grant all on metastore.* to hive@'localhost'  identified by 'hive';
flush privileges;

7.配置hive-site.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
    <name>hive.exec.scratchdir</name>
    <value>/usr/local/hive/tmp</value>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/usr/local/hive/warehouse</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/usr/local/hive/log</value>
</property>
 
<!-- 配置 MySQL 数据库连接信息 -->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
  </property>
</configuration>

8.配置hive_env.sh文件

加入JAVA_HOME和HADOOP_HOME方法和上文类似不赘述

如果在系统环境变量中配置了也可以进行此步

9.初始化hive

./schematool -dbType mysql -initSchema hive hive

10.命令行输入hive 执行 show databases; 如果成功hive就搭建成功了!

到此搭建就算完成了,在搭建过程中踩了很多坑,以下几篇文章对我的搭建有很大帮助,十分感谢!

致谢:

centos7安装Hive2.3.6(含配置mysql)_baixf的博客-CSDN博客

Ubuntu安装MySQL及常用操作_厦大数据库实验室博客

Spark On YARN 集群安装部署 | Jark's Blog

mac下Hadoop、HDFS、Spark环境的安装和搭建_淡然坊-CSDN博客

如果有任何疑问欢迎留言讨论

如果有任何错误纰漏欢迎留言斧正

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐