Ubuntu搭建 Spark、Hive、Hadoop+yarn
Ubuntu搭建 Spark、Hive、Hadoop+yarn操作系统:Ubuntu 16.04.12虚拟机:VMware® Workstation 16 Pro 16.0.0JDK:1.8.0_282Hadoop:hadoop-2.7.5 https://archive.apache.org/dist/hadoop/common/Spark:spark-2.4.7-bin-hadoop2.7 h
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/binexport 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/nativeexport 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:参考厦门大学大数据实验室文章:
5.下载驱动 mysql-connector-java-5.xx,解压后将jar包拷贝到HIVE目录下的lib文件夹中
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&characterEncoding=UTF-8&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博客
Spark On YARN 集群安装部署 | Jark's Blog
mac下Hadoop、HDFS、Spark环境的安装和搭建_淡然坊-CSDN博客
如果有任何疑问欢迎留言讨论
如果有任何错误纰漏欢迎留言斧正
更多推荐
所有评论(0)