hadoop+hbase+spark搭建
hadoop安装:
前期准备:
1.host配置和主机名
2.安装jdk
3.免密ssh登录
Hadoop搭建参考
1.在master上解压安装包
#下载
wget http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
#解压
tar -xzvf hadoop-2.7.3.tar.gz -C /usr/local
#重命名
mv hadoop-2.7.3 hadoop
2.配置master的环境变量
修改配置文件,vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop命令在当前终端立即生效
source /etc/profile
进入hadoop/etc/hadoop下
2.配置core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>namenode的地址</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data0/hadoop/tmp</value>
<description></description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data0/hadoop/dfs/tmp</value>
<description>namenode存放数据的目录</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
3.配置hdfs-site.xml
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>文件副本数</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data0/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data0/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>权限管理</description>
</property>
<property>
<name>dfs.blocksize</name>
<value>16m</value>
</property>
4.配置mapred-site.xml
拷贝mapred-site.xml.template为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://master:9001</value>
</property>
5.配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle,mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
<description>需要复制spark的jar到hadoop的share/hadoop/yarn/</description
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value> <!-- 16G -->
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>16384</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>4096</value>
</property>
6、配置masters文件
vim masters
#内容
master
7、配置slaves文件(Master主机特有)
vim /usr/local/hadoop/etc/hadoop/slaves
内容
master #如果master也作为DataNode
slave1
slave2
slave3
此外在hadoop-env.sh中还有一些需要注意的配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_201 #如果启动后报jdk的问题则需要修改为绝对路径
export HADOOP_SSH_OPTS="-p 8008" #如果ssh的port不是默认的,则需要修改
以上都是我的配置,有些是后期hbase和spark使用时出现问题修改之后的
最后复制master上的hadoop文件到各个slave上,删除slave内容,配置环境变量
启动集群
1、格式化HDFS文件系统:
进入master的~/hadoop目录,执行以下操作
bin/hadoop namenode -format
格式化namenode,第一次启动服务前执行的操作,以后不需要执行。
2、然后启动hadoop:
sbin/start-all.sh
3、使用jps命令查看运行情况
#master 执行 jps查看运行情况
25928 SecondaryNameNode
25742 NameNode
26387 Jps
26078 ResourceManager
#slave 执行 jps查看运行情况
24002 NodeManager
23899 DataNode
24179 Jps
4、查看hadoop状态
可以用命令hadoop dfsadmin -report,会输出集群的状态
也可以在网页上查看,http://master:50070/dfshealth.html#tab-overview
HBase安装
安装hbase
首先在master安装配置好之后,在复制到从节点
wget http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
#解压
tar -xzvf hbase-1.3.1-bin.tar.gz -C /usr/local/
#重命名
mv hbase-1.3.1 hbase
配置环境变量vim /etc/profile
#内容
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH
#使立即生效
source /etc/profile
修改配置文件
hbase 相关的配置主要包括hbase-env.sh、hbase-site.xml、regionservers三个文件,都在 /usr/local/hbase/conf目录下面:
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export HBASE_SSH_OPTS="-p 8018"
export HBASE_CLASSPATH=/usr/local/hbase/conf
#此配置信息,设置由hbase自己管理zookeeper,不需要单独的zookeeper。
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/usr/local/hbase
export HADOOP_HOME=/usr/local/hadoop
#Hbase日志目录
export HBASE_LOG_DIR=/usr/local/hbase/logs
2.配置 hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://server207-ke.mars.ljnode.com:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>server207-ke.mars.ljnode.com:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>server207-ke.mars.ljnode.com,slave</value>
</property>
3.配置regionservers
master
slave1
slave2
slave3
之后复制hbase文件到slave中,配置环境变量
启动hbase
启动仅在master节点上执行即可
~/hbase/bin/start-hbase.sh
启动后,master上进程和slave进程列表
master中的信息
6225 Jps
2897 SecondaryNameNode # hadoop进程
2710 NameNode # hadoop master进程
3035 ResourceManager # hadoop进程
5471 HMaster # hbase master进程
2543 HQuorumPeer # zookeeper进程
salve中的信息
4689 Jps
2533 HQuorumPeer # zookeeper进程
2589 DataNode # hadoop slave进程
4143 HRegionServer # hbase slave进程
因为hbase依赖于hadoop,因此启动和停止都是需要按照顺序进行
如果安装了独立的zookeeper
启动顺序: hadoop-> zookeeper-> hbase
停止顺序:hbase-> zookeeper-> hadoop
使用自带的zookeeper
启动顺序: hadoop-> hbase
停止顺序:hbase-> hadoop
重启hbase
~/hbase/bin/stop-hbase.sh
~/hadoop/sbin/stop-all.sh
~/hadoop/sbin/start-all.sh
~/hbase/bin/start-hbase.sh
Spark on yarn
spark需要先安装scala
添加spark环境变量
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
在conf下修改配置
1.spark-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=server207-ke.mars.ljnode.com
export SPARK_WORKER_MEMORY=16g
export SPARK_WORKER_CORES=4
export SPARK_WORKER_INSTANCES=2
export SPARK_SSH_OPTS="-p 8018"
2.spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
添加
spark.yarn.jars hdfs:/master:9000/spark/lib_jars/*
3.slaves
master
slave1
slave2
slave3
上传jar
hadoop fs -mkdir /spark/lib_jars
hadoop fs -put jars/* /spark_jars
复制master的spark文件到slave上,修改环境变量
启动spark
sbin/start-all.sh
验证启动
jps命令,master上会多一个Master进程,slave会多Worker
网页上查看:http://master:8080
spark on yarn
spark有两种提交方式:
spark-submit 提交完整的文件
spark-shell 提交一行一行的脚本
提交的配置
–master MASTER_URL 如spark://host:port,yarn, yarn-cluster,yarn-client, local
–deploy-mode DEPLOY_MODE Client或者master,默认是client
–class CLASS_NAME 应用程序的主类
–name NAME 应用程序的名称
–jars JARS 逗号分隔的本地jar包,包含依赖的jar
–files FILES 逗号分隔的文件,提交的其他文件
–driver-memory MEM Driver内存,默认1G,一般不用很大
–executor-memory MEM 每个executor的内存,默认是1G。一般4-8G
–executor-core NUM 每个executor的核数。一般2-4
–num-executors NUM 启动的executor数量。不用很多,视情况而定
–queue QUEUE_NAME 队列名称
–conf PROP=VALUE 固定的spark配置属性,默认是conf/spark-defaults.conf
下面是conf的配置
spark.default.parallelism 每个stage的默认task数量,官网建议num-executors * executor-cores的2~3倍
spark.storage.memoryFraction RDD持久化数据在Executor内存中能占的比例,默认是0.6
spark.shuffle.memoryFraction shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2
spark.dynamicAllocation.enabled=true 开启动态资源分配
spark.dynamicAllocation.minExecutors 每个Application最小分配的executor数
spark.dynamicAllocation.maxExecutors 每个Application最大并发分配的executor数
spark.shuffle.service.enabled=true 启用External shuffle Service服务
spark.sql.shuffle.partitions SQL的partition数量,视SQL而定
park.speculation=true Worker倾斜可以将不给力的节点kill
spark.yarn.executor.memoryOverhead 内存上线
以上是我用到的spark相关的配置,和hadoop组件的安装经历,后续会补充