一、HBase的安装配置
这里主要记录的是HBbase1.2.6版本(主从节点都要配置)的过程,hadoop2.5.1
1.配置
解压后到自己要放的位置后,修改配置文件:
1.修改启动配置文件hbase-site.xml,添加如下内容:
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master</value>
</property>
<!-- 1.0后的版本可以自己配置端口
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
-->
2.修改regionservers中的内容,添加从节点,将localhost替换为slave
3.配置环境变量
vim /etc/profile
# 追加HBase的环境变量和hadoopclasspath
# setting HBase env
export HBASE_HOME=/usr/hbase-1.4.0/
export HADOOP_CLASSPATH=$HBASE_HOME/lib/*
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/usr/mysql/bin:$HIVE_HOME/bin:$HBASE_HOME/bin
export PATH
source /etc/profile
4.配置从节点
直接将配置好的主节点中的HBase复制到从节点即可
scp -r /usr/hbase-1.4.0 slave:/usr
2.验证
启动验证:
/usr/hbase-1.4.0/bin/start-hbase.sh
应该会有如下的日志输出,以out结尾的文件,配置的用户不同可能在root这个有所不一样
外部访问主节点的60010或者16010端口有如下界面证明配置成功
如果在正常启动HBase后发现60010端口不能访问,那就试一下16010端口是否可以访问,官方文档有说明:对于0.98版本之后的版本端口已经从60010改为了16010端口,如果还不能访问,就需要自己在其根目录下的conf/hbase-site.xml文件中添加访问端口,不要忘了从节点的配置:
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
在做了上述配置仍然不能在外部访问,查看hbase的启动日志cat /usr/hbase-1.4.0/logs/hbase-root-master-master.log
(最后的master根据配置会有所差异)有如下的报错日志
很崩溃,想法子解决啊,回头解决的时候,发现从节点的环境变量没有配置……清理工作目录/tmp/hadoop-root/dfs/name下的内容和从节点的hadoopdate目录中的内容从新format(我的目录在/home/zkpk/hadoopdate),后来终于解决了,总感觉这玩意儿会时不时的抽抽……
之前查找资料的时候,发先有人在windows中部署和时候,遇到相似的问题,采用替换63位的hadoop.dll文件即可解决,也一同记录一下
二、Mahout的安装配置
主节点配置即可,直接解压到指定目录即可,在启动Hadoop之后,启动Mahuot,查看启动日志是否正常即可
Mahout-0.13.0/bin/mahout
启动日志如下:
三、Sqoop安装配置
主节点配置,这里是sqoop-1.4.6版本,解压后进行配置:
1.复制mysql驱动包
我这里是5.1.37的驱动包,直接复制到Sqoop根目录中的lib文件夹中即可:
cp ../mysql-connector-java-5.1.37.jar lib/
2.配置Sqoop的启动环境
首先复制临时启动配置文件重命名为sqoop-env.sh,并进行环境配置,进入sqoop的更目录后
cp conf/sqoop-env-template.sh conf/sqoop-env.sh
# 去掉注释符号,根据自己的安装目录进行修改,如下
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/hadoop-2.5.1
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/hadoop-2.5.1
#set the path to where bin/hbase is available
export HBASE_HOME=/usr/hbase-1.2.6/
#Set the path to where bin/hive is available
export HIVE_HOME=/usr/apache-hive-1.2.2-bin
#Set the path for where zookeper config dir is,这个还未安装
#export ZOOCFGDIR=
随后查看Sqoop的命令是否生效:
/usr/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/sqoop help
成功配置后应该读取到如下信息
四、Spark安装配置
1.简单介绍
Spark是一个快速且通用的集群计算机平台,它在处理TB级和PB级的数据时特别快速(这里是相对于Hadoop),只需要几秒钟或者几分钟,而且它的应用场景比较多,Sparks扩充了MapReduce并行计算的模型,所以它比Hadoop更快,再其次Spark是基于内存计算。另外Spark具备超强的通用性,容纳了其他分布式系统拥有的能力,比如批处理(Hadoop)、迭代计算,交互查询(像Hive)和流处理(像Storm)等,所以它在某种程度上降低了维护成本,但是在实际部署的时候还是比较有难度的。Spark主要有如下紧密集成的一些主件
其中Spark Core是包含了Spark的基本功能,包含了任务调度、内存管理、容错机制等,内部定义了RDDs(弹性分布式数据集,内部也提供了很多API来操作);
Spark SQL是Spark处理结构化数据的库,就像Hive SQL、MySQL一样,企业中通常用来作报表统计;
Spark Streaming是实时数据流处理组件,类似于Storm,企业中用来从Kafka接受数据做实时统计;
Mlib(Machine learning lib)是一个包含通用机器学习功能的包,包含了分类、聚类、回归等,还有模型评估和数据导入,最主要的是MLib提供的上面这些方法都支持集群上的横向扩展;
Graphx是处理图的库,主要用于图的处理;
Cluster Managers是集群管理,Spark自带一个集群管理是单独调度器,常见的集群管理包括Hadoop YARN,Apache Messos等;
基本操作,创建文件helloSpark,然后启动Spark-shell
# 启动spark-shell
/usr/spark-1.3.1-bin-hadoop2.4/bin/spark-shell
# 加载文本文件helloSpark成为RDD赋给变量名为lines的RDD
val lines = sc.textFile("~/examples/helloSpark")
# 计数得出lines的行数
lines.count()
启动日志太多,可以配置conf目录下的log4j.properties文件,里面默认是log4j.rootCategory=INFO, console,可以将INFO改为WARN级别
2.安装配置
主节点配置即可,这里注意一下spark和hive版本兼容的问题,在hive的源码包解压后,查看maven工程的pom.xml文件,里面有对应spark的版本信息,下载的时候注意一下就可以了,我对应的spark的版本如下
所以这里选择的是spark-1.3.1-bin-hadoop2.4版本,解压后配置Hadoop的环境变量
vim /etc/profile
# 追加如下的环境变量
# setting spark env
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
# 刷新生效
source /etc/profile
基本完成,最后验证一下Spark是否安装成功,首先启动Hadoop,然后进入spark的根目录运行spark中计算Pi的小栗子:
# 注意运行class的位置,不同版本class的位置可能不同
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --num-executors 3 --driver-memory 1g --executor-memory 1g --executor-cores 1 lib/spark-examples-1.3.1-hadoop2.4.0.jar 10
其中–class指明要提交的类,–master指明以cluster的方式连接到YARN集群,–num-executors指定启动executors的数量,–driver-memory指明driver的内存,默认是521M,–executor-memory指明executor的内存,默认是1G,最后lib/spark-examples-1.3.1-hadoop2.4.0.jar指明该类所在的路径。
但是在实际运行上述的小栗子的时候,出现数据传输异常,主要如下:
反正上面bulabula…一大堆意思就是没有节点,但是通过WEB页面可以发现是存在节点的:
然后一想,我的防火墙是不是没关,查看后得知已关并不是防火墙的问题,查看从节点的datenode的日志
# 用户名可能不一样
cat /usr/hadoop-2.5.1/logs/hadoop-root-datanode-slave.log
信息有如下报错信息
这里报错意思就是说集群节点和数据节点版本不一致,只看百度说是清楚工作目录,看的一知半解,这里结合日志可以发现zkpk这个东西,是我之前配置用的一个用户,后来嫌麻烦,直接在root用户下配置,这也就是所谓的版本不一致的命题了,好了,知道问题下面就着手解决吧,将主节点中的namenode信息/tmp/hadoop-root/dfs/name
目录下的删除current(这个目录可以在http://191.128.83.130:50070端口看到)和从节点中的datenode相关信息全部删除(删除/home/zkpk/hadoopdata/dfs/data
下的current),还有从节点中创建的数据目录/home/zkpk/hadoopdata/dfs/data/中的current(就是hadoop核心配置文件core-site.xml中配置的hadoop.tmp.dir属性值),我这里是我这里配置的时候调皮了一下,所以两个目录看着有些不协调,然后重格式化,启动hadoop:
hdfs namenode -format
/usr/hadoop-2.5.1/sbin/start-all.sh
进入spark的根目录再次执行上面的测试用例即可,近乎成功就,是近乎……又冒出了一个问题就是启动测试后无限打印yarn.Client: Application report for application_1516714568640_0001 (state: ACCEPTED)这个东西完全停不下来,总体效果如下
好了,问题出现又要开始啃了,这个问题一般是由于有多个用户同时向集群提交任务或一个用户向集群同时提交了多个任务导致Yarn资源的分配错误,可以加简单的理解为僧多粥少的场景,我这里完全是自己作的,一个zkpk用户,一个root用户,主要修改主从节点下的/usr/hadoop-2.5.1/etc/hadoop/capacity-scheduler.xml文件中的yarn.scheduler.capacity.maximum-am-resource-percent属性值,将0.1改为0.5增加可调度资源,然后重启hadoop即可重新测试,这里就无须再次format了,结果如下: