之前的几篇博客中记录的Hadoop、Spark和Hbase部署过程虽然看起来是没多大问题,但是之后在上面跑任务的时候出现了各种各样的配置问题。庆幸有将问题记录下来,可以整理出这篇部署整合篇。

确保集群的每台机器用户名都为cloud(或者一样)

为了避免过多重复的解释,这里仅仅示意了怎么配置,关于配置的详情解释可自行百度,必应之~或者参考:

hadoop2.2.0集群安装和配置

HBase集群的安装部署

Spark(一)– Standalone HA的部署

修改各个节点上的/etc/hosts文件确保ip与主机名的映射关系正确

关闭系统防火墙

service iptables stop

chkconfig iptables off

reboot

配置ssh免密码登陆

在每台机器上都执行下列命令

chmod -R 755 /home/cloud

mkdir ~/.ssh

ssh-keygen -t rsa

之后在cloud1上收集各个机器的公钥

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh cloud2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh cloud3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh cloud4 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh cloud5 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh cloud6 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

将公钥拷贝到其他节节点

scp ~/.ssh/authorized_keys cloud2:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys cloud3:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys cloud4:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys cloud5:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys cloud6:~/.ssh/authorized_keys

在每台机器上都执行(很重要,注意配置ssh的时候要使用cloud用户来配置)

chmod -R 700 ~/.ssh

Zookeeper安装:

zk服务器集群规模不小于3个节点,要求各服务器之间系统时间要保持一致

设置环境变量

vi /etc/profile

新增

export ZOOKEEPER_HOME=/home/cloud/zk

path后新增

:$ZOOKEEPER_HOME/bin

source /etc/profile

保存文件生效

在另外两个节点slave1和slave2上分别设置改环境变量

进入zk目录

在conf目录下,重命名文件

mv zoo_sample.cfg zoo.cfg

编辑该文件,执行vi zoo.cfg

修改dataDir=/home/cloud/zk/data

新增

server.1=cloud4:2888:3888

server.2=cloud5:2888:3888

server.3=cloud6:2888:3888

ticktickTime=20000 (默认)2-20倍的minSessionTimeout与maxSessionTimeout

注: tickTime 心跳基本时间单位毫秒,ZK基本上所有的时间都是这个时间的整数倍。

zk的详细配置见:

zookeeper配置文件详解

创建文件夹mkdir /home/cloud/zk/data

在data目录下,创建文件myid,内容为1

echo 1 > /home/cloud/zk/data/myid

把zk目录复制到slave1和slave2中

scp -r zk slave1:/home/cloud

scp -r zk slave2:/home/cloud

把cloud5中相应的myid的值改为1

把cloud6中相应的myid的值改为2

启动,在三个节点上分别执行命令./zkServer.sh start

检验,在三个节点上分别执行命令./zkServer.sh status

JDK安装

使用root用户

在usr目录下新建java目录。

将jdk上传到linux中

在/usr/java下

chmod 755 jdk-6u45-linux-i586.bin

./jdk-6u45-linux-i586.bin

mv jdk1.6.0_45 jdk

vi /etc/profile

export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin source /etc/profile

Hadoop安装

解压Hadoop文件之后,进入conf目录

修改hadoop-env.sh

加入

export JAVA_HOME=/usr/java/jdk

(为了解决网络不好或者其他情况下造成的通信失败,下列有些简单粗暴的配置了连接zk的timeout时间)

修改core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cloud/hadoop/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>cloud4:2181,cloud5:2181,cloud6:2181</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>6000000</value>
</property>
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
<value>6000000</value>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>6000000</value>
</property>
</configuration>

修改hdfs-site.xml

<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>cloud1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>cloud1:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>cloud2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>cloud2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://cloud4:8485;cloud5:8485;cloud6:8485/ns1</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/cloud/hadoop/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/cloud/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.qjournal.start-segment.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.prepare-recovery.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.accept-recovery.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.prepare-recovery.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.accept-recovery.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.finalize-segment.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.select-input-streams.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.get-journal-state.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.new-epoch.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>dfs.qjournal.write-txns.timeout.ms</name>
<value>600000000</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>6000000</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.resourcemanager.hostname</name>
<value>cloud3</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

修改slaves

cloud3

cloud4

cloud5

cloud6

将配置好的hadoop拷贝到其他节点

scp -r ~/hadoop/ cloud2:~/

scp -r ~/hadoop/ cloud3:~/

scp -r ~/hadoop/ cloud4:~/

scp -r ~/hadoop/ cloud5:~/

scp -r ~/hadoop/ cloud6:~/

启动Hadoop之前先启动zk

cd ~/zookeeper/bin/

./zkServer.sh start

查看状态:一个leader,两个follower

./zkServer.sh status

启动journalnode(在cloud1上启动所有journalnode,注意:是调用的hadoop-daemons.sh这个脚本,注意是复数s的那个脚本)

cd ~/hadoop

~/hadoop/sbin/hadoop-daemons.sh start journalnode

运行jps命令检验,cloud4、cloud5、cloud6上多了JournalNode进程

格式化HDFS(在bin目录下)

在cloud1上执行命令:

./hdfs namenode -format

格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里

我配置的是~/hadoop/tmp,然后将~/hadoop/tmp拷贝到cloud2的~/hadoop/下。

scp -r ~/hadoop/tmp/ cloud2:~/hadoop/

格式化ZK(在cloud1上执行即可,在bin目录下)

./hdfs zkfc -formatZK

启动HDFS(在cloud1上执行)

~/hadoop/sbin/start-dfs.sh

启动YARN(cloud2)

~/hadoop/sbin/start-yarn.sh

注意:hadoop初次格式化之后要将两个nn节点的tmp/dfs/name文件夹同步

Hbase安装

解压之后配置hbase集群,要修改3个文件(首先zk集群已经安装好了)

注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下

让hbase节点知道hdfs的映射关系,也可以在hbase-site.xml中配置

修改hbase-env.sh

export JAVA_HOME=/usr/java/jdk
//告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/usr/local/hadoop/conf

vi hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>cloud4:2181,cloud5:2181,cloud6:2181</value>
</property>
<property>
<name>hbase.master</name>
<value>cloud1</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>6000000</value>
</property>
</configuration>

和hdfs的配置一样,说明hbase的子节点都在哪些机器上

vi regionservers

cloud3

cloud4

cloud5

cloud6

把zoo.cfg 拷贝到 hbase-0.90.3/conf/下

拷贝hbase到其他节点

scp -r ~/hbase/ cloud2:~/

scp -r ~/hbase/ cloud3:~/

scp -r ~/hbase/ cloud4:~/

scp -r ~/hbase/ cloud5:~/

scp -r ~/hbase/ cloud6:~/

将配置好的HBase拷贝到每一个节点并同步时间。

Spark安装

安装scala:

tar –zxvf scala-2.10.5.tgz

mv scala-2.10.5 scala

安装spark:

tar -zxvf spark-1.3.0-bin-hadoop2.3.tgz

mv spark-1.3.1 spark

进入spark目录,修改文件slaves

vi conf/slaves

cloud2

cloud3

cloud4

cloud5

cloud6

修改spark-env.sh

vi conf/spark-env.sh

export SPARK_MASTER_IP=cloud1
export SPARK_WORKER_MEMORY=512m
export JAVA_HOME=/usr/java/jdk
export SCALA_HOME=/home/cloud/scala
export SPARK_HOME=/home/cloud/spark
export HADOOP_CONF_DIR=/home/cloud/hadoop/etc/hadoop
export SPARK_LIBRARY_PATH=$SPARK_HOME/lib
export SCALA_LIBRARY_PATH=SPARK_LIBRARY_PATH
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
#错误:节点无法加载到hbase包
#处理方式:sh中加入classpath指向hbasejar路径
export SPARK_CLASSPATH=/home/cloud/hbase/lib/*
export SPARK_DAEMON_JAVA_OPTS="-Dspark.storage.blockManagerHeartBeatMs=6000000"

spark配置详见:

Spark 配置

将cloud1上配置好的spark和scala通过scp复制到其他各个节点上(注意其他节点上的profile文件也要一致)

各个节点的profile文件内容:

export JAVA_HOME=/usr/java/jdk
export HADOOP_HOME=/home/cloud/hadoop
export SCALA_HOME=/home/cloud/scala
export SPARK_HOME=/home/cloud/spark
export HBASE_HOME=/home/cloud/hbase
export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin

Hadoop+Spark+Hbase部署整合篇的更多相关文章

  1. java+hadoop+spark+hbase+scala+kafka+zookeeper配置环境变量记录备忘

    java+hadoop+spark+hbase+scala 在/etc/profile 下面加上如下环境变量 export JAVA_HOME=/usr/java/jdk1.8.0_102 expor ...

  2. Docker搭建大数据集群 Hadoop Spark HBase Hive Zookeeper Scala

    Docker搭建大数据集群 给出一个完全分布式hadoop+spark集群搭建完整文档,从环境准备(包括机器名,ip映射步骤,ssh免密,Java等)开始,包括zookeeper,hadoop,hiv ...

  3. 001.hadoop及hbase部署

    一 环境准备 1.1 相关环境 系统:CentOS 7 #CentOS 6.x系列也可参考,转换相关命令即可. hadoop包:hadoop-2.7.0.tar.gz #下载官方地址:http://w ...

  4. Hadoop及Hbase部署

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 环境准备 1.1 相关环境 1.2 网络环境 二 基础环境配置 2.1 配置相 ...

  5. 基本环境安装: Centos7+Java+Hadoop+Spark+HBase+ES+Azkaban

    1.  安装VM14的方法在 人工智能标签中的<跨平台踩的大坑有提到> 2. CentOS分区设置: /boot:1024M,标准分区格式创建. swap:4096M,标准分区格式创建. ...

  6. build hadoop, spark, hbase cluster

    1,something: 1,arc land 506  git branch 507  git status 508  git reset multicloud/qcloud/cluster_man ...

  7. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  8. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  9. HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)

    原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...

随机推荐

  1. python反爬之动态字体相关文档

    web_font的一些基本原理 https://blog.csdn.net/fdipzone/article/details/68166388 实例1 猫眼电影 http://www.cnblogs. ...

  2. (转)Oracle中判断某字段不为空及为空的SQL语句

    比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 se ...

  3. gcc升级方法

    https://www.cppfans.org/1719.html 默认链接到 /usr/local/bin/gcc,需要链接一下,替换默认的低版本 ln -s /usr/local/bin/gcc ...

  4. springboot 整合jdbcTemplate

    springboot 整合jdbcTemplate 〇.搭建springboot环境(包括数据库的依赖) 一.添加依赖 如果导入了jpa的依赖,就不用导入jdbctemplete的依赖了jpa的依赖: ...

  5. Android开发工具--AndroidStudio

    1.Android studio更改快捷键File->setttings  搜索key map就可以更改成自己喜欢的会计键风格了

  6. Qt笔记——入门

    Qt的介绍 跨平台c++图形用户界面应用程序框架 Qt的框架 父类(基类)子类(派生类) 头文件 QApplication应用程序类 Qt头文件没有.h 头文件和类名一样 有且只有一个应用程序类的对象 ...

  7. 磁盘挂载MOUNT 445问题集

    挂载磁盘mount -t cifs -o username="Administrator",password="123@qq" //192.168.100.4/ ...

  8. hdu5970

    真是怀疑当初合肥赛区怎么考这么差的…… 首先根据辗转相除法可知f(i,j)=f(i+j*k,j) 于是我们可以先于处理出f(i,j) (j<=666,i<=j),当确定i,j时c也确定 ( ...

  9. .NET Core Runtime ARM32 builds now available

    原文地址:传送门 .NET Core Runtime ARM32 builds now available The .NET Core team is now producing ARM32 buil ...

  10. 漫谈网络通信——从OSI网络模型到TCP/IP协议族

    OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型成为开放式系统互联参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信 ...