CentOS集群安装CDH Hadoop环境 操作指引 及Yarn Hbase Spark配置安装

2020-06-24 11:42:59 浏览数 (1)

toc

CentOS集群安装CDH Hadoop环境 操作指引 及Hbase Spark安装

此篇博客主要记录集群安装Hadoop环境的流程及配置讲解。这里的IP已换成192.168.0.*

集群一共五台机器,各节点的安装服务如下:

代码语言:txt复制
IP:192.168.0.1
代码语言:txt复制
namenode(active)  journalnode nodemanager zkfc hbase-master zookeeper
代码语言:txt复制
IP:192.168.0.2
代码语言:txt复制
namenode(standby)  journalnode nodemanager zkfc hbase-master zookeeper
代码语言:txt复制
IP:192.168.0.3
代码语言:txt复制
spark journalnode nodemanager resourcemanager(active)    hbase-regionserver zookeeper
代码语言:txt复制
IP:192.168.0.4
代码语言:txt复制
spark journalnode nodemanager resourcemanager(standby)   hbase-regionserver zookeeper
代码语言:txt复制
IP:192.168.0.5
代码语言:txt复制
spark journalnode nodemanager resourcemanager(standby)   hbase-regionserver zookeeper

1. 前期部署:

1.1 每台机器安装JDK
代码语言:txt复制
#wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
代码语言:txt复制
#tar xf /usr/local/jdk-8u141-linux-x64.tar.gz;mv /usr/local/jdk1.8.0_141 /usr/local/jdk1.8;echo -e "export JAVA_HOME=/usr/local/jdk1.8 nexport PATH=$PATH:$JAVA_HOME/bin" >> #/etc/profile;source /etc/profile
1.2 修改主机名:
代码语言:txt复制
192.168.0.1:
代码语言:txt复制
#hostnamectl set-hostname hdfs01.hdfscluster
代码语言:txt复制
192.168.0.2:
代码语言:txt复制
#hostnamectl set-hostname hdfs02.hdfscluster
代码语言:txt复制
192.168.0.3:
代码语言:txt复制
#hostnamectl set-hostname hdfs03.hdfscluster
代码语言:txt复制
192.168.0.4:
代码语言:txt复制
#hostnamectl set-hostname hdfs04.hdfscluster
代码语言:txt复制
192.168.0.5:
代码语言:txt复制
#hostnamectl set-hostname hdfs05.hdfscluster
1.3 每台机器改hosts:
代码语言:txt复制
vi /etc/hosts
代码语言:txt复制
192.168.0.1 hdfs01 hdfs01.hdfscluster
代码语言:txt复制
192.168.0.2 hdfs02 hdfs02.hdfscluster
代码语言:txt复制
192.168.0.3 hdfs03 hdfs03.hdfscluster
代码语言:txt复制
192.168.0.4 hdfs04 hdfs04.hdfscluster
代码语言:txt复制
192.168.0.5 hdfs05 hdfs05.hdfscluster
1.4 192.168.0.1作为主节点免密登录到其它机器:
代码语言:txt复制
# ssh-keygen -t rsa
代码语言:txt复制
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.1
代码语言:txt复制
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.2
代码语言:txt复制
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.3
代码语言:txt复制
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.4
代码语言:txt复制
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.5

2. Zookeeper服务部署

2.1 单主机节点下载CDH版本
代码语言:txt复制
# cd /usr/local;wget  
2.2 各节点创建数据目录
代码语言:txt复制
#mkdir /data/zookeeper/{logs,data}
2.3 单节点安装配置并scp其它节点:
代码语言:txt复制
#tar xf /usr/local/zookeeper-latest.tar.gz -C /usr/local/
代码语言:txt复制
#ln -sv /usr/local/zookeeper-3.4.5-cdh5.16.2 /usr/local/zookeeper
代码语言:txt复制
#vi /etc/profile   #追加配置
代码语言:txt复制
export ZOOKEEPER_HOME=/usr/local/zookeeper
代码语言:txt复制
export PATH=$ZOOKEEPER_HOME/bin:$PATH
代码语言:txt复制
souce /etc/profile
代码语言:txt复制
#vi $ZOOKEEPER_HOME/conf/zoo.cfg
代码语言:txt复制
tickTime=2000
代码语言:txt复制
initLimit=10
代码语言:txt复制
syncLimit=5
代码语言:txt复制
dataDir=/data/zookeeper/data
代码语言:txt复制
dataLogDir=/data/zookeeper/logs
代码语言:txt复制
clientPort=2181
代码语言:txt复制
server.1=192.168.0.1:2888:3888
代码语言:txt复制
server.2=192.168.0.2:2888:3888
代码语言:txt复制
server.3=192.168.0.3:2888:3888
代码语言:txt复制
server.4=192.168.0.4:2888:3888
代码语言:txt复制
server.5=192.168.0.5:2888:3888
代码语言:txt复制
#scp -r /usr/local/zookeeper 192.168.0.2:/usr/local/
代码语言:txt复制
#scp -r /usr/local/zookeeper 192.168.0.3:/usr/local/
代码语言:txt复制
#scp -r /usr/local/zookeeper 192.168.0.4:/usr/local/
代码语言:txt复制
#scp -r /usr/local/zookeeper 192.168.0.5:/usr/local/
代码语言:txt复制
#scp /etc/profile  192.168.0.2:/etc/
代码语言:txt复制
#scp /etc/profile  192.168.0.3:/etc/
代码语言:txt复制
#scp /etc/profile  192.168.0.4:/etc/
代码语言:txt复制
#scp /etc/profile  192.168.0.5:/etc/
2.4 配置节点标识
代码语言:txt复制
192.168.0.1:
代码语言:txt复制
#echo "1" > /data/zookeeper/data/myid
代码语言:txt复制
192.168.0.2:
代码语言:txt复制
#echo "2" > /data/zookeeper/data/myid
代码语言:txt复制
192.168.0.3:
代码语言:txt复制
#echo "3" > /data/zookeeper/data/myid
代码语言:txt复制
192.168.0.4:
代码语言:txt复制
#echo "4" > /data/zookeeper/data/myid
代码语言:txt复制
192.168.0.5:
代码语言:txt复制
#echo "5" > /data/zookeeper/data/myid
2.5 各节点启动并查看此节点状态
代码语言:txt复制
#/usr/local/zookeeper/bin/zkServer.sh start 
代码语言:txt复制
#/usr/local/zookeeper/bin/zkServer.sh status

3. hadoop软件配置安装

3.1 下载hadoop,hbase后scp其它节点
代码语言:txt复制
#cd /usr/local/
代码语言:txt复制
#wget https://archive.cloudera.com/cdh5/cdh/5/hbase-latest.tar.gz
代码语言:txt复制
#wget https://archive.cloudera.com/cdh5/cdh/5/hadoop-latest.tar.gz
代码语言:txt复制
#wget https://archive.cloudera.com/cdh5/cdh/5/spark-latest.tar.gz
3.2 各节点解压
代码语言:txt复制
#cd /usr/local
代码语言:txt复制
#tar xf hadoop-latest.tar.gz ;mv hadoop-2.6.0-cdh5.9.3 hadoop;
代码语言:txt复制
#tar xf hbase-latest.tar.gz; mv hbase-1.2.0-cdh5.16.2 hbase
代码语言:txt复制
#tar xf spark-latest.tar.gz
3.3 各节点添加到profile文件结尾
代码语言:txt复制
#vi /etc/profile
代码语言:txt复制
export HADOOP_HOME=/usr/local/hadoop
代码语言:txt复制
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
代码语言:txt复制
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
代码语言:txt复制
export HBASE_HOME=/usr/local/hbase
代码语言:txt复制
export PATH=$PATH:$HBASE_HOME/bin
3.4 各节点刷新变量
代码语言:txt复制
#source /etc/profile
3.5 各节点机器创建目录
代码语言:txt复制
#mkdir /data/hadoop/{data,name,tmp,log,checkpoint,journalnode} -p
3.6 hadoop的数据节点创建目录

192.168.0.3 14 15机器创建目录:

代码语言:txt复制
#mkdir /data{1,2,3,4}/hadoop/{data,name,tmp,log,checkpoint,journalnode} -p
3.7 配置Hadoop Yarn服务

先配置主节点192.168.0.1然后scp其它节点

core-site.xml

代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/core-site.xml
代码语言:txt复制
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hdfscluster</value>
      </property>
      <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/hadoop/journalnode</value>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop/tmp</value>
      </property>
      <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
      </property>
      <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
      </property>
      <property>
        <name>ha.zookeeper.quorum</name>
     <value>192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181,192.168.0.4:2181,192.168.0.5:2181</value>
      </property>
    </configuration>
  • fs.defaultFS:表示集群namenode的地址,对于namenode HA来说,需要取一个cluster id来作区分,以便于区分跟hadoop联邦的其它namenode,这里取hdcluster作为该集群的ID
  • dfs.journalnode.edits.dirhadoop.tmp.dir:表示journalnode的数据文件路径、临时文件路径
  • fs.trash.interval:表示回收站的保留时间(分钟),也即hdfs的文件删除后,在回收站里面保留的时长
  • io.file.buffer.size:表示读取文件的字节数(byte)
  • ha.zookeeper.quorum:表示zookeeper集群的主机与端口

hdfs-site.xml

代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
代码语言:txt复制
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>2</value>
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/data/hadoop/name</value>
      </property>
      <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/data1/hadoop/data,/data2/hadoop/data,/data3/hadoop/data,/data4/hadoop/data</value>
      </property>
      <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>/data/hadoop/checkpoint</value>
      </property>
      <property>
        <name>dfs.namenode.handler.count</name>
        <value>10</value>
      </property>
      <property>
        <name>dfs.datanode.handler.count</name>
        <value>10</value>
      </property>
      <property>
        <name>dfs.nameservices</name>
        <value>hdfscluster</value>
      </property>
      <property>
        <name>dfs.ha.namenodes.hdfscluster</name>
        <value>nn1,nn2</value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.hdfscluster.nn1</name>
        <value>hdfs01:9000</value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.hdfscluster.nn2</name>
        <value>hdfs02:9000</value>
      </property>
      <property>
        <name>dfs.namenode.http-address.hdfscluster.nn1</name>
        <value>hdfs01:50070</value>
      </property>
      <property>
        <name>dfs.namenode.http-address.hdfscluster.nn2</name>
        <value>hdfs02:50070</value>
      </property>
      <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hdfs01:8485;hdfs02:8485;hdfs03:8485;hdfs04:8485;hdfs05:8485/hdfscluster</value>
      </property>
      <property>
        <name>dfs.client.failover.proxy.provider.hdfscluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
      </property>
      <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
      </property>
      <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
      </property>
    </configuration>

配置说明:

  • dfs.replication:表示hdfs的数据块备份数量,默认是3
  • dfs.namenode.name.dirdfs.datanode.data.dirdfs.namenode.checkpoint.dir:表示namenode、datanode、checkpoint的数据路径
  • dfs.blocksize:表示数据块的大小,默认为64M,可根据需要改为128M,甚至256M
  • dfs.namenode.handler.countdfs.datanode.handler.count:表示在namenode、datanode的进程数
  • dfs.nameservices:表示集群namenode的ID,这里命名为hdcluster,注意要跟 core-size.xml 里面的配置项 fs.defaultFS 中的集群ID一致
  • dfs.ha.namenodes.hdcluster:表示namenode的id,这里有两个namenode节点,因此使用nn1,nn2命名
  • dfs.namenode.rpc-address.hdcluster.nn1dfs.namenode.rpc-address.hdcluster.nn2:表示nn1、nn2的远程调用主机和端口
  • dfs.namenode.http-address.hdcluster.nn1dfs.namenode.http-address.hdcluster.nn2:表示 nn1、nn2的所在节点http服务和端口
  • dfs.namenode.shared.edits.dir:表示namenode共享的元数据路径,在配置HA时,使用journalnode来保存元数据,维持namenode元数据的一致性
  • dfs.client.failover.proxy.provider.hdcluster:表示HDFS客户端连接到Active NameNode的一个java类(默认)
  • dfs.ha.automatic-failover.enabled.hdcluster:表示当namenode ha的active namenode出现故障时,是否自动切换
  • dfs.ha.fencing.methods:表示故障时自动切换使用的方法

mapred-site.xml

代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
代码语言:txt复制
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

该配置表示使用yarn框架


yarn-site.xml

代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
代码语言:txt复制
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>hdfscluster</value>
  </property>
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2,rm3</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hdfs03</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hdfs04</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm3</name>
    <value>hdfs05</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hdfs03:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>hdfs04:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm3</name>
    <value>hdfs05:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181,192.168.0.4:2181,192.168.0.5:2181</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>51200</value>
  </property>
  <property>
     <name>yarn.scheduler.minimum-allocation-mb</name>
     <value>1024</value>
  </property>
  <property>
     <name>yarn.scheduler.maximum-allocation-mb</name>
     <value>51200</value>
  </property>
  <property>
     <name>yarn.app.mapreduce.am.resource.mb</name>
     <value>2048</value>
  </property>
</configuration>
  • yarn.nodemanager.aux-services:NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序,否则会报错
  • yarn.resourcemanager.ha.enabled:表示启动resourcemanager HA高可用
  • yarn.resourcemanager.cluster-id:表示resourcemanager的集群ID,不要与别的集群混淆即可,这里命名为hdcluster
  • yarn.resourcemanager.ha.rm-ids:表示resourcemanager的节点id,这里有两个节点,使用rm1,rm2作为ID
  • yarn.resourcemanager.hostname.rm1yarn.resourcemanager.hostname.rm2:表示rm1,rm2的主机,这里取hd3、hd4
  • yarn.resourcemanager.webapp.address.rm1yarn.resourcemanager.webapp.address.rm2:表示rm1,rm2的网页访问地址和端口,也即通过该地址和端口可访问作业情况
  • yarn.resourcemanager.zk-address:表示使用zookeeper来协助管理resourcemanager主备的zookeeper集群主机与端口

其他配置:

代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/slaves
代码语言:txt复制
hdfs03
代码语言:txt复制
hdfs04
代码语言:txt复制
hdfs05
代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/log4j.properties
代码语言:txt复制
hadoop.log.dir=/data/hadoop/log
代码语言:txt复制
hadoop.log.file=hadoop.log
代码语言:txt复制
修改日志的路径
代码语言:txt复制
#vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
代码语言:txt复制
export JAVA_HOME=/usr/local/jdk1.8
3.8 各节点配置scp
代码语言:txt复制
#cd $HADOOP_HOME/etc/hadoop/
代码语言:txt复制
#scp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves log4j.properties 192.168.0.2:`pwd`
代码语言:txt复制
#scp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves log4j.properties 192.168.0.3:`pwd`
代码语言:txt复制
#scp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves log4j.properties 192.168.0.4:`pwd`
代码语言:txt复制
#scp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves log4j.properties 192.168.0.5:`pwd`
3.9 首次格式化启动顺序

启动 journalnode(hd1,hd2,hd3,hd4,hd5)

代码语言:txt复制
#hadoop-daemon.sh start journalnode 

格式化 namenode(hd1)

代码语言:txt复制
#hdfs namenode -format

初始化 HA 状态到 zk(hd1)

代码语言:txt复制
#hdfs zkfc -formatZK 

启动 namenode active(hd1)

代码语言:txt复制
#hadoop-daemon.sh start namenode

同步 namenode(hd2)

代码语言:txt复制
#hdfs namenode -bootstrapStandby

启动 namenode standby(hd2)

代码语言:txt复制
#hadoop-daemon.sh start namenode

启动ZookeeperFailoverController(hd1,hd2)

代码语言:txt复制
#hadoop-daemon.sh start zkfc

启动 datanode(hd3,hd4,hd5)

代码语言:txt复制
#hadoop-daemon.sh start datanode

启动 resourcemanager(hd3,hd4,hd5)

代码语言:txt复制
#yarn-daemon.sh start resourcemanager

启动 nodemanager(hd3,hd4,hd5)

代码语言:txt复制
#yarn-daemon.sh start nodemanager
3.10 各节点查看服务:
  • shell 查看:
代码语言:txt复制
    #jps
  • WEB查看
代码语言:txt复制
浏览器访问方式该地址时需要进行隧道配置,本地50070端口映射192.168.0.1的50070端口:
代码语言:txt复制
访问方式:http://127.0.0.1:50070
代码语言:txt复制
http://192.168.0.1:50070

4. hbase 软件安装配置

4.1 主节点配置

代码语言:txt复制
#cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
代码语言:txt复制
#vi $HBASE_HOME/conf/hbase-site.xml
代码语言:txt复制
<configuration>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/data/zookeeper/data</value>
    <description>
        注意这里的zookeeper数据目录与hadoop ha的共用,也即要与 zoo.cfg 中配置的一致
        Property from ZooKeeper config zoo.cfg.
        The directory where the snapshot is stored.
    </description>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hdfs01:9000/hbase</value>
    <description>
        The directory shared by RegionServers.
        官网多次强调这个目录不要预先创建,hbase会自行创建,否则会做迁移操作,引发错误
        至于端口,有些是8020,有些是9000,看 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 里面的配置,本实验配置的是
        dfs.namenode.rpc-address.hdfscluster.nn1 , dfs.namenode.rpc-address.hdfscluster.nn2
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>
        分布式集群配置,这里要设置为true,如果是单节点的,则设置为false
        The mode the cluster will be in. Possible values are
        false: standalone and pseudo-distributed setups with managed ZooKeeper
        true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)
    </description>
  </property>
</configuration>

region server 配置

代码语言:txt复制
#vi $HBASE_HOME/conf/regionservers
代码语言:txt复制
hdfs03
代码语言:txt复制
hdfs04
代码语言:txt复制
hdfs05

master backup 配置

代码语言:txt复制
#vi $HBASE_HOME/conf/backup-masters
代码语言:txt复制
hdfs02

环境配置

代码语言:txt复制
#vi $HBASE_HOME/conf/hbase-env.sh
代码语言:txt复制
export JAVA_HOME=/usr/local/jdk1.8
代码语言:txt复制
export HBASE_MANAGES_ZK=false

4.2 配置Scp到其它节点

代码语言:txt复制
#cd $HBASE_HOME/conf/
代码语言:txt复制
#scp hdfs-site.xml hbase-site.xml regionservers backup-masters hbase-env.sh 192.168.0.5:`pwd`
代码语言:txt复制
#scp hdfs-site.xml hbase-site.xml regionservers backup-masters hbase-env.sh 192.168.0.4:`pwd`
代码语言:txt复制
#scp hdfs-site.xml hbase-site.xml regionservers backup-masters hbase-env.sh 192.168.0.3:`pwd`
代码语言:txt复制
#scp hdfs-site.xml hbase-site.xml regionservers backup-masters hbase-env.sh 192.168.0.2:`pwd`

4.3 启动Hbase

启动Hbase master(hdfs01)

代码语言:txt复制
#hbase-daemon.sh start master 

启动Hbase regionserver(hdfs03、hdfs04、hdfs05)

代码语言:txt复制
#hbase-daemon.sh start regionserver 

启动Hbase backup-master(hdfs02)

代码语言:txt复制
#hbase-daemon.sh start master --backup

4.4 查看Hbase服务

  • 通过shell查看
代码语言:txt复制
#jps
  • 进入hbase查看
代码语言:txt复制
#hbase shell
代码语言:txt复制
>status
代码语言:txt复制
1 active master, 1 backup masters, 3 servers, 0 dead, 25.3333 average load

5. spark on yarn 软件安装配置

spark只利用三台主机部署:

hdfs03 hdfs04 hdfs05

5.1 安装配置

代码语言:txt复制
#cd /usr/local/
代码语言:txt复制
#tar xf spark-latest.tar.gz
代码语言:txt复制
#mv spark-1.6.0-cdh5.16.2 spark
代码语言:txt复制
#cd /usr/local/spark
代码语言:txt复制
#cp spark-env.sh.template spark-env.sh
代码语言:txt复制
vim spark-env.sh
代码语言:txt复制
export JAVA_HOME=/usr/local/jdk1.8
代码语言:txt复制
export SCALA_HOME=/home/software/scala2.11
代码语言:txt复制
export HADOOP_HOME=/usr/local/hadoop
代码语言:txt复制
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
代码语言:txt复制
#vi spark-defaults.conf 
代码语言:txt复制
spark.yarn.jars=hdfs://hdfs01:9000/spark_jars/*
代码语言:txt复制
#vi slaves
代码语言:txt复制
hdfs04
代码语言:txt复制
hdfs05

5.2 JAR包路径创建

在HDFS上,创建一个目录,用来存放spark的依赖jar包。

此目录是spark-defaults.conf目录中配置的目录名称,命令如下:

代码语言:txt复制
#hadoop fs -mkdir /spark_jars

进入spark安装目录的jars目录,执行:

代码语言:txt复制
#hadoop fs -put ./* /spark_jars

5.3 启动spark shell

进入Spark安装目录的bin目录,执行如下命令:

代码语言:txt复制
#sh spark-shell --master yarn-client

有些关于Spark on YARN部署的博客,实际上介绍的是Spark的 standalone运行模式。如果启动Spark的master和worker服务,这是Spark的 standalone运行模式,不是Spark on YARN运行模式。

0 人点赞