Hadoop安装操作大全

这篇博客详细介绍了Hadoop的安装配置过程,包括网络IP配置、JDK与Hadoop环境设置、Zookeeper配置、HA高可用配置、MySQL安装、Hive部署、HBase全分布式安装以及Scala和Spark的安装。每个环节都提供了具体的步骤,如创建目录、解压文件、配置环境变量、启动服务等,旨在帮助读者掌握完整的Hadoop生态系统搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一节、配置网络IP地址:

打开配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.206.10
NETMASK=255.255.255.0
GATEWAY=192.168.206.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c5660370-0b73-429d-9357-38e440777d7f
DEVICE=ens33
ONBOOT=yes

网络重启:service network restart

测试是否连通:使用ping 192.168.206.2

第二节、配置jdk和hadoop的环境:

说明:apps放置解压文件,software放置压缩文件。

cd /opt/

1、创建两个文件夹

mkdir apps
mkdir software

cd software/

2、解压到指定的/opt/apps下

tar zxvf jre-8u251-linux-x64.tar.gz -C /opt/apps/

tar zxvf hadoop-2.7.4.tar.gz -C /opt/apps/
tar zxvf zookeeper-3.4.5.tar.gz -C /opt/apps/

3、更改文件名

cd /opt/apps/
mv jre1.8.0_251/ jdk
mv hadoop-2.7.4/ hadoop
mv zookeeper-3.4.5/ zookeeper

4、设置环境变量

vi /etc/profile
添加配置
export JAVA_HOME=/opt/apps/jdk
export HADOOP_HOME=/opt/apps/hadoop
ZOOKEEPER_HOME=/opt/apps/zookeeper
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$ZOOKEEPER_HOME/bin

source /etc/profile

5、查看版本是否生效

java -version
hadoop version

6、将解压数据和环境变量发送给其他主机:

scp -r /opt/apps root@master2:/opt/
scp -r /opt/apps root@slave1:/opt/
scp -r /opt/apps root@slave2:/opt/
scp -r /etc/profile root@master2:/etc/
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
每个节点让环境变量生效:source /etc/profile

7、配置域名解析信息:

vi /etc/hosts

192.168.206.10 master
192.168.206.11 master2
192.168.206.12 slave1
192.168.206.13 slave2

8、使用rsa加密技术,生成公钥和私钥。一路回车即可

​ root@master ~]# cd ~

[root@master ~]# ssh-keygen -t rsa			

​ 进入~/.ssh目录下,将id_rsa.pub复制一份文件,文件名为authorized_keys。保证此文件的权限是600

[root@master ~]# cd ~/.ssh			
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@master
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@master2
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@slave1
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@slave2

​ 进行验证

ssh master 
ssh slave1
ssh slave2

第三节、配置zookeeper环境

1、基础环境准备

1. 将zookeeper-3.4.5.tar.gz上传到/opt/software中
2. 解压
   [root@master software]# tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/apps/
3. 更名zookeeper
   [root@master software]# cd ../apps/
   [root@master apps]# mv zookeeper-3.4.5 zookeeper
4. 配置环境变量
   [root@master apps]# vi  /etc/profile
   .........省略......
   export ZOOKEEPER_HOME=/opt/apps/zookeeper
   export PATH=$ZOOKEEPER_HOME/bin:$PATH
5. 使当前会话生效
   [root@master apps]# source /etc/profile
6. 查看zookeeper的版本号
   [root@master apps]# echo stat|nc localhost 2181

2、复制出一个zoo.cfg文件

[root@master zookeeper]# cd conf/               #进入zookeeper的conf目录
[root@master conf]# cp zoo_sample.cfg  zoo.cfg   #复制出zoo.cfg文件

3、修改zoo.cfg文件

[root@master conf]# vi zoo.cfg
tickTime=2000			#  定义的时间单元(单位毫秒),下面的两个值都是tickTime的倍数。
initLimit=10			#follower连接并同步leader的初始化连接时间。
syncLimit=5				#心跳机制的时间(正常情况下的请求和应答的时间)
dataDir=/opt/apps/zookeeper/data/   #修改zookeeper的存储路径
dataLogDir=/opt/apps/zookeeper/log/   #修改zookeeper的日志存储路径
server.1=master2:2888:3888            #对应服务器id
server.2=slave1:2888:3888             #对应服务器id
server.3=slave2:2888:3888              #对应服务器id
clientPort=2181							 #客户端连接服务器的port

4、创建两个文件

mkdir	 /opt/apps/zookeeper/data/ 
mkdir 	/opt/apps/zookeeper/log/
开启zookeeper:
zkServer.sh start开启三个节点
验证zookeeper:
zkServer.sh status 验证状态  分别是leader或者follower

第四节、HA的配置总结

1、 环境准备:

1. 三台虚拟机:master,slave1,slave2
2. 保证三台机器的防火墙都是关闭状态
3. 保证三台机器的免密登陆认证
4. 保证三台机器的时间同步
5. 保证三台机器的/etc/hosts文件的域名映射关系配置
6. 保证三台机器安装了jdk和hadoop,并且配置了环境变量且命令好使

说明:如果上述环境都准备好了,那么就修改hadoop的7个文件,参考如下:

2、hadoop/etc/hadoop/core-site.xml

<configuration>
     <!-- 指定hdfs的ha的域名,注意这个是hdfs-site.xml文件里配置的逻辑名称 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://supercluster</value>
    </property>
     <!-- 指定hdfs的数据存储位置,此路径一旦指定,会被其他属性使用和依赖-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/apps/hadoop/tmp</value>
    </property>
    <!-- 指定journalnode的数据存储位置-->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/apps/hadoop/tmp</value>
    </property>
    <!-- 指定zookeeper集群的服务器节点,如果没有搭建zookeeper,请参考zookeeper知识模块-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master2:2181,slave1:2181,slave2:2181</value>
    </property>
</configuration>

3、hadoop/etc/hadoop/hdfs-site.xml

<configuration>
     <!-- 指定块文件的复本个数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
     <!-- 指定块文件的大小-->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
    <!-- 节点动态上下线的配置	
     <property>
      <name>dfs.hosts</name>
      <value>/opt/apps/hadoop/etc/hadoop/include</value>
     </property>   
     <property>
      <name>dfs.hosts.exclude</name>
      <value>/opt/apps/hadoop/etc/hadoop/exclude</value>
     </property>
     -->
	 <!-- 指定ha的名称服务:即逻辑名称-->
    <property>
        <name>dfs.nameservices</name>
        <value>supercluster</value>
    </property>
	 <!-- 指定ha的两个namenode的唯一标识符-->
    <property>
        <name>dfs.ha.namenodes.supercluster</name>
        <value>nn1,nn2</value>
    </property>
     <!-- 指定两个唯一标识符,对应的主机和端口号-->
    <property>
        <name>dfs.namenode.rpc-address.supercluster.nn1</name>
        <value>master:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.supercluster.nn2</name>
        <value>master2:8020</value>
    </property>
	  <!-- 指定两个唯一标识符,对应的web地址的主机和端口号-->
    <property>
        <name>dfs.namenode.http-address.supercluster.nn1</name>
        <value>master:50070</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.supercluster.nn2</name>
        <value>master2:50070</value>
    </property>
	 <!-- 指定journalnode集群的服务器ip、port和存储目录-->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master2:8485;slave1:8485;slave2:8485/journalData</value>
    </property>
	 <!-- 指定客户端联系Active节点的java类-->
    <property>
        <name>dfs.client.failover.proxy.provider.supercluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
	 <!-- 指定防止脑裂的防护机制,注意centos 7很可能会因为少一些内置命令而失效-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
	 <!-- 指定防火机制进行免密登陆的私钥-->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
     <!-- 指定防火机制进行免密登陆的超时时间,可选配置-->
    <property> 
        <name>dfs.ha.fencing.ssh.connect-timeout</name> 
        <value>30000</value> 
    </property>

    <!--  start  automatic-failover -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

4、hadoop/etc/hadoop/mapred-site.mxl

<configuration>
   <!--  配置执行mr的框架名称 -->
    <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>

5、hadoop/etc/hadoop/yarn-site.xml

<configuration>
    <!-- 指定yarn的shuffle技术 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定resourcemanager的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>

6、hadoop/etc/hadoop/hadoop-env.sh

[root@master hadoop]# vi hadoop-env.sh
................
# The java implementation to use.
export JAVA_HOME=/opt/apps/jdk		#指定你的jdk路径
..................

7、hadoop/etc/hadoop/slaves

[root@master hadoop]# vi slaves
# 指定三台datanode节点
master
slave1
slave2

8、hadoop/etc/hadoop/yarn-env.sh

[root@master hadoop]# vi yarn-env.sh
........省略........
# some Java parameters
export JAVA_HOME=/opt/apps/jdk
........省略........

启动三个节点上的journalnode服务

[root@master ~]# hadoop-daemon.sh start journalnode
[root@slave1 ~]# hadoop-daemon.sh start journalnode
[root@slave2 ~]# hadoop-daemon.sh start journalnode

9、格式化namenode,启动集群

1、 先删除所有节点的${hadoop.tmp.dir}/tmp/的数据(可选,这一步表示弃用fsimage.)
2、选择master2节点namenode进行格式化(正常启动后只做一次格式化)
  [root@master2 ~]# hdfs namenode -format
3、并启动namenode进程
  [root@master2 ~]# hadoop-daemon.sh start namenode

在另一台namenode上拉取已格式化的那台机器的镜像文件(数据的一致性)

[root@master ~]# hdfs namenode -bootstrapStandby

然后关闭已经启动的namenode

[root@master2 ~]# hadoop-daemon.sh stop namenode

格式化zkfc

1、前提QuorumPeerMain服务必须处于开启状态,客户端zkfc才能格式化成功
  [root@master2 ~]# zkServer.sh start
  [root@slave1 ~]# zkServer.sh start
  [root@slave2 ~]# zkServer.sh start
2、选择其中一个namenode节点进行格式化zkfc
  [root@master2 ~]# hdfs zkfc -formatZK

你就可以快乐的开启HA集群进行测试了
[root@master2 ~]# start-all.sh

注意:以后开HA集群时,要先开zookeeper服务,再开HDFS。

第五节、Hive安装之mysql安装:

1、环境配置

检测系统是否自带Mysql

rpm -qa|grep mysql

img

如果有进行强行卸载
rpm -e --nodeps .........
检测系统是否自带mariadb
rpm -qa|grep mariadb

img

rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

img

rpm -e --nodeps mariadb-5.5.64-1.el7.x86_64

img

rpm -e --nodeps mariadb-server-5.5.64-1.el7.x86_64

img

根据不同的版本号卸载

用连接工具将下载的mysql-5.7.21-el7-x86_64.tar.gz上传到linux服务器/data/software/的目录下面

2、安装

1、进入/data/software/目录下解压
tar -zxvf mysql-5.7.21-el7-x86_64.tar.gz
2、解压完成后重命名
mv mysql-5.7.21-el7-x86_64  mysql-5.7.21
mv mysql-5.7.21 /usr/local/
3、检查mysql组和用户是否存在,如果没有则创建
cat /etc/group|grep mysql
groupadd mysql
useradd -r -g mysql mysql  #useradd -r参数表示mysql用户是系统用户,不可用于登录系统

3、安装数据库

a、创建data目录
cd   /usr/local/mysql-5.7.21
mkdir data
b、 将/usr/local/mysql-5.7.28的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql-5.7.21
c、 在/usr/local/mysql-5.7.28/support-files目录下创建my_default.cnf
vim my_default.cnf

[mysqld]

#设置mysql的安装目录
basedir =/usr/local/mysql-5.7.21
#设置mysql数据库的数据存放目录
datadir = /usr/local/mysql-5.7.21/data
#设置端口
port = 3306
socket = /tmp/mysql.sock
#设置字符集
character-set-server=latin1
#日志存放目录
log-error = /usr/local/mysql-5.7.21/data/mysqld.log
pid-file = /usr/local/mysql-5.7.21/data/mysqld.pid
d、拷贝,是否覆盖,是
cp my_default.cnf /etc/my.cnf
e、初始化Mysql
cd mysql-5.7.21
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.21/ --datadir=/usr/local/mysql-5.7.21/data/

如果报错:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or 就安装libaio,如果没有则跳过

yum install libaio

初始化完成之后查看日志

cat /usr/local/mysql-5.7.21/data/mysqld.log,蓝框里的是临时密码需要记下来,下次登陆mysql需要用到W<xPiraUC0IS

img

把启动脚本放到开机初始化目录

cp support-files/mysql.server /etc/init.d/mysql
img
f、启动mysql
service mysql start

img

进入mysql并更改密码

cd /usr/local/mysql-5.7.21
./bin/mysql -u root -p
mysql> set password=password('123456');
mysql> grant all privileges on *.* to root@'%' identified by '123456';
mysql> flush privileges;
g、添加远程访问权限
mysql> use mysql;
mysql> update user set host='%' where user = 'root';
mysql> flush privileges;

如果更改时报错:ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’,就先查询一下是否已更改,最后执行刷新。

查询命令:select host,user from user where user=‘root’;

查看一下host是否已经有了%这个值,有了就可以了.

重启mysql生效

service mysql restart

第六节:hive的安装部署

准备环境:
- jdk1.8 
- hadoop-2.7.6 
- hive-2.3.4 
- mysql-5.7.21

1、搭建步骤

**步骤1)**安装hive,配置环境变量
1. 将hive安装包上传到/opt/software/,进行解压
   [hadoop@master software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/apps/

2. 创建一个软连接
   [hadoop@master apps]$ ln -s apache-hive-2.3.4-bin/ hive

3. 配置环境变量
   [hadoop@master apps]$ vi /etc/profile
   #hive environment
   export HIVE_HOME=/opt/apps/hive
   export PATH=$HIVE_HOME/bin:$PATH  

4. 使.bash_profile生效
   [hadoop@master apps]]$ source /etc/profile
**步骤2)**安装mysql环境:【上面已经配置完成】
**步骤3)**将mysql的驱动包mysql-connecter-5.1.28.bin.jar,放入hive的lib中
步骤4) 配置hive-env.sh(在hive的conf目录中)
[hadoop@master conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@master conf]$ vi hive-env.sh
........省略........
export HADOOP_HOME=/opt/apps/hadoop/
export JAVA_HOME=/opt/apps/jdk/
export HIVE_CONF_DIR=/opt/apps/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/opt/apps/apache-hive-2.3.4-bin
export HIVE_HOME=/opt/apps/apache-hive-2.3.4-bin

........省略........
步骤5) 配置hive-site.xml(在hive的conf目录中)
[hadoop@master conf]$ cp hive-default.xml.template hive-site.xml
[hadoop@master conf]$ vi hive-site.xml #找到相应属性修改值。或者删除所有默认配置,重新添加属性

<configuration>
<!--配置mysql的连接字符串-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=latin1</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>

<!--配置mysql的连接驱动-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
</property>

<!--配置登录mysql的用户-->
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>username to use against metastore database</description>
</property>

<!--配置登录mysql的密码-->
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
</property>
</configuration>
步骤6) 连接测试:

配置完上述属性,本地模式即完成,测试能否在mysql中创建hive元数据库。前提:集群和mysql都要先启动

[hadoop@master conf]$ schematool -initSchema -dbType mysql
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:       root
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed
[hadoop@master conf]$ hive
Logging initialized using configuration in file:/opt/apps/hive2.3.4/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show tables;
步骤7)HIVE的基本操作:库、表
1、说明和命名规范
hive有一个默认的数据库default,在操作HQL时,如果不明确的指定要使用哪个库,则使用默认数据库。
hive的数据库名、表名都不区分大小写
名字不能使用数字开头
不能使用关键字
尽量不使用特殊符号
库操作语法

2、创建数据库

语法1:create database mydb;
语法2:create database if not exists mydb;
语法3:create database if not exists mydb comment 'this is my database';

3、 查看所有数据库

语法:show databases; 

4、切换数据库

语法:use mydb;

5、查看数据库信息

语法1:desc database databaseName;
语法2:desc database extended databaseName;
语法3:describe database extended databaseName;

6、删除数据库

语法1:drop database databasename;         	#这个只能删除空库
语法2:drop database databasename cascade;    	#如果不是空库,则可以加cascade强制删除

第七节、hbase全分布式安装

HBASE是一个分布式系统
	其中有一个管理角色:  HMaster(一般2台,一台active,一台backup)
	其他的数据节点角色:  HRegionServer(很多台,看数据容量)

	实际上,您需要一个完全分布式的配置来全面测试HBase,并在实际场景中使用它。在分布式配置中,集群包含多个节点,每个节点运行一个或多个HBase守护进程。这些包括主实例和备份主实例、多个ZooKeeper节点和多个RegionServer节点。
1 角色分配&准备工作
  • 角色分配
master2:hmaster 
master:regionserver
slave1:regionserver
slave2:regionserver
  • 准备工作
1. 安装zookeeper
2. hbase-env.sh
# 配置JDK的路径
export JAVA_HOME=/opt/apps/jdk
# 配置关闭HBASE管理zookeeper
export HBASE_MANAGES_ZK=false
2 安装
  • hbase-site.xml
<configuration>
		<!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:8020/hbase</value>
                <description>配置hbase的数据存放在hdfs的目录</description>
        </property>
		<!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
                <description>开启hbase的分布式模式</description>
        </property>
		<!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master:2181,slave1:2181,slave2:2181</value>
                <description>配置hbase使用真实的zookeeper的目录</description>
        </property>
</configuration>
  • 修改regionservers
master
slave1
slave2
  • 在hbase的conf创建backup-masters的文件,并在其中添加主机名centos2
master
  • 分发
[root@master2 local]# scp -r hbase-1.2.1/ master1:/usr/local/
[root@master2 local]# scp -r hbase-1.2.1/ slave1:/usr/local/
[root@master2 local]# scp -r hbase-1.2.1/ slave2:/usr/local/
  • 启动hbase
1. 现启动hadoop和zookeeper
2. start-hbase.sh
  • 配置环境变量(包含了:jdk/hadoop/mysql/hive/hbase/zookeeper)
export JAVA_HOME=/opt/apps/jdk
export HIVE_HOME=/opt/apps/hive2.3.4
export HADOOP_HOME=/opt/apps/hadoop
export MYSQL_HOME=/usr/local/mysql-5.7.21
export ZOOKEEPER_HOME=/opt/apps/zookeeper
export HBASE_HOME=/opt/apps/hbase
export PATH=$HBASE_HOME/bin:$MYSQL_HOME/bin:$HIVE_HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$ZOOKEEPER_HOME/bin

第八节、scala安装

配置环境变量即可:(如下环境变量包含了java/scala/spark/hadoop/zookeeper)

export JAVA_HOME=/opt/apps/jdk
export SCALA_HOME=/opt/apps/scala
export SPARK_HOME=/opt/apps/spark
export HADOOP_HOME=/opt/apps/hadoop
ZOOKEEPER_HOME=/opt/apps/zookeeper
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:HADOOP_HOME/bin: H A D O O P H O M E / s b i n : HADOOP_HOME/sbin: HADOOPHOME/sbin:PATH: Z O O K E E P E R H O M E / b i n : ZOOKEEPER_HOME/bin: ZOOKEEPERHOME/bin:SCALA_HOME/bin: S P A R K H O M E / b i n : SPARK_HOME/bin: SPARKHOME/bin:SPARK_HOME/sbin

第九节、spark安装

2.2 Standalone模式

集群搭建

集群组成使用了4台节点,在教学中可以根据自己的节点适当减少worker即可

基本条件:同步时间、免密登录、关闭防火墙、安装JDK1.8
1.上传安装包到hadoop01
2.将文件解压到指定的目录
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/software/

3.跳转到安装路径进入到conf进行配置
cd /opt/software/spark-2.2.0-bin-hadoop2.7/
cd conf/

3.1修改conf目录下的env文件
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
在文件的末尾添加
export JAVA_HOME=/opt/apps/jdk 
#JDK安装路径
#主节点IP(写节点名地址必须是节点 写IP地址必须是IP)
export SPARK_MASTER_PORT=7077 
#主节点端口号(内部通信)

3.2修改slaves.template文件添加从节点
mv slaves.template slaves
vi slaves
内容(根据自己的节点适当删减):
master
slave1
slave2


配全局环境变量(选配好处:可以在任意位置使用bin下脚本,如spark-shell和sparkSubmit):
vi /etc/profile
export SPARK_HOME=/opt/apps/spark

source /etc/profile

配置Job History Server

在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是 说,Spark应用程序运行完后,将无法查看应用程序的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览。

1.确保HDFS系统启动

创建directory目录
hdfs dfs -mkdir /directory

2.进入到spark安装目录conf目录下
cd /opt/apps/spark/conf

3.将spark-default.conf.template复制为spark-default.conf
mv spark-defaults.conf.template spark-defaults.conf
vi  spark-defaults.conf 在文件的末尾添加
spark.eventLog.enabled           true  开启日志
spark.eventLog.dir               hdfs://master:8020/directory 存储路径
spark.eventLog.compress          true 是否压缩

#参数描述:
#spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下
#spark.eventLog.compress 这个参数设置history-server产生的日志文件是否使用压缩,true为使用,false为不使用。这个参数务可以成压缩哦,不然日志文件岁时间积累会过


ps:最好不要是用IE内核的浏览器不然效果是显示不出来的
   启动的时候是
   start-all.sh       start-history-server.sh 
Spark高可用
那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
Spark集群规划:master,master2是Master;master2,slave1,slave2是Worker
安装配置zk集群,并启动zk集群
停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master2,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark"
分发到master2,slave1,slave2节点下
1.在master节点上修改slaves配置文件内容指定worker节点
ps:若是修改了slaves节点那么配置文件也发分发
2.先启动zookeeper集群
3.在master上执行sbin/start-all.sh脚本,然后在master2上执行sbin/start-master.sh启动第二个Master

ps:若使用spark-shell启动集群需要添加配置
spark-shell --master spark://master:port1,master2:7077

2.3 yarn 模式

集群搭建
1,在Hadoop配置下的yarn-site.xml文件中增加以下两项:
这两项判断是否启动一个线程检查每个任务正使用的物理内存量/虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true 
如果不配置这两个选项,在spark-on-yarn的client模式下,可能会报错,导致程序被终止。
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

2,修改Spark-env.sh 添加:
HADOOP_CONF_DIR=/opt/apps/hadoop/etc/hadoop
YARN_CONF_DIR=/opt/apps/hadoop/etc/hadoop

PARK_MASTER_IP并添加如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master2,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark"
分发到master2,slave1,slave2节点下
1.在master节点上修改slaves配置文件内容指定worker节点
ps:若是修改了slaves节点那么配置文件也发分发
2.先启动zookeeper集群
3.在master上执行sbin/start-all.sh脚本,然后在master2上执行sbin/start-master.sh启动第二个Master

ps:若使用spark-shell启动集群需要添加配置
spark-shell --master spark://master:port1,master2:7077


### 2.3 yarn 模式

#### 集群搭建

~~~xml
1,在Hadoop配置下的yarn-site.xml文件中增加以下两项:
这两项判断是否启动一个线程检查每个任务正使用的物理内存量/虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true 
如果不配置这两个选项,在spark-on-yarn的client模式下,可能会报错,导致程序被终止。
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

2,修改Spark-env.sh 添加:
HADOOP_CONF_DIR=/opt/apps/hadoop/etc/hadoop
YARN_CONF_DIR=/opt/apps/hadoop/etc/hadoop

~~~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值