之前的几篇博客中记录的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下

  1. chmod 755 jdk-6u45-linux-i586.bin
  2. ./jdk-6u45-linux-i586.bin
  3. mv jdk1.6.0_45 jdk
  4. vi /etc/profile
  5. export JAVA_HOME=/usr/java/jdk
  6. export PATH=$PATH:$JAVA_HOME/bin
  7. source /etc/profile

Hadoop安装

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

修改hadoop-env.sh

加入

  1. export JAVA_HOME=/usr/java/jdk

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

修改core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://ns1</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/home/cloud/hadoop/tmp</value>
  9. </property>
  10. <property>
  11. <name>ha.zookeeper.quorum</name>
  12. <value>cloud4:2181,cloud5:2181,cloud6:2181</value>
  13. </property>
  14. <property>
  15. <name>ha.zookeeper.session-timeout.ms</name>
  16. <value>6000000</value>
  17. </property>
  18. <property>
  19. <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
  20. <value>6000000</value>
  21. </property>
  22. <property>
  23. <name>ipc.client.connect.timeout</name>
  24. <value>6000000</value>
  25. </property>
  26. </configuration>

修改hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.nameservices</name>
  4. <value>ns1</value>
  5. </property>
  6. <property>
  7. <name>dfs.ha.namenodes.ns1</name>
  8. <value>nn1,nn2</value>
  9. </property>
  10. <property>
  11. <name>dfs.namenode.rpc-address.ns1.nn1</name>
  12. <value>cloud1:9000</value>
  13. </property>
  14. <property>
  15. <name>dfs.namenode.http-address.ns1.nn1</name>
  16. <value>cloud1:50070</value>
  17. </property>
  18. <property>
  19. <name>dfs.namenode.rpc-address.ns1.nn2</name>
  20. <value>cloud2:9000</value>
  21. </property>
  22. <property>
  23. <name>dfs.namenode.http-address.ns1.nn2</name>
  24. <value>cloud2:50070</value>
  25. </property>
  26. <property>
  27. <name>dfs.namenode.shared.edits.dir</name>
  28. <value>qjournal://cloud4:8485;cloud5:8485;cloud6:8485/ns1</value>
  29. </property>
  30. <property>
  31. <name>dfs.journalnode.edits.dir</name>
  32. <value>/home/cloud/hadoop/journal</value>
  33. </property>
  34. <property>
  35. <name>dfs.ha.automatic-failover.enabled</name>
  36. <value>true</value>
  37. </property>
  38. <property>
  39. <name>dfs.client.failover.proxy.provider.ns1</name>
  40. <value>
  41. org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
  42. </value>
  43. </property>
  44. <property>
  45. <name>dfs.ha.fencing.methods</name>
  46. <value>
  47. sshfence
  48. shell(/bin/true)
  49. </value>
  50. </property>
  51. <property>
  52. <name>dfs.ha.fencing.ssh.private-key-files</name>
  53. <value>/home/cloud/.ssh/id_rsa</value>
  54. </property>
  55. <property>
  56. <name>dfs.ha.fencing.ssh.connect-timeout</name>
  57. <value>30000</value>
  58. </property>
  59. <property>
  60. <name>dfs.qjournal.start-segment.timeout.ms</name>
  61. <value>600000000</value>
  62. </property>
  63. <property>
  64. <name>dfs.qjournal.prepare-recovery.timeout.ms</name>
  65. <value>600000000</value>
  66. </property>
  67. <property>
  68. <name>dfs.qjournal.accept-recovery.timeout.ms</name>
  69. <value>600000000</value>
  70. </property>
  71. <property>
  72. <name>dfs.qjournal.prepare-recovery.timeout.ms</name>
  73. <value>600000000</value>
  74. </property>
  75. <property>
  76. <name>dfs.qjournal.accept-recovery.timeout.ms</name>
  77. <value>600000000</value>
  78. </property>
  79. <property>
  80. <name>dfs.qjournal.finalize-segment.timeout.ms</name>
  81. <value>600000000</value>
  82. </property>
  83. <property>
  84. <name>dfs.qjournal.select-input-streams.timeout.ms</name>
  85. <value>600000000</value>
  86. </property>
  87. <property>
  88. <name>dfs.qjournal.get-journal-state.timeout.ms</name>
  89. <value>600000000</value>
  90. </property>
  91. <property>
  92. <name>dfs.qjournal.new-epoch.timeout.ms</name>
  93. <value>600000000</value>
  94. </property>
  95. <property>
  96. <name>dfs.qjournal.write-txns.timeout.ms</name>
  97. <value>600000000</value>
  98. </property>
  99. <property>
  100. <name>ha.zookeeper.session-timeout.ms</name>
  101. <value>6000000</value>
  102. </property>
  103. </configuration>

修改mapred-site.xml

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>

修改yarn-site.xml

  1. <configuration>
  2. <property>
  3. <name>yarn.resourcemanager.hostname</name>
  4. <value>cloud3</value>
  5. </property>
  6. <property>
  7. <name>yarn.nodemanager.aux-services</name>
  8. <value>mapreduce_shuffle</value>
  9. </property>
  10. </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

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

vi hbase-site.xml

  1. <configuration>
  2. <property>
  3. <name>hbase.rootdir</name>
  4. <value>hdfs://ns1/hbase</value>
  5. </property>
  6. <property>
  7. <name>hbase.cluster.distributed</name>
  8. <value>true</value>
  9. </property>
  10. <property>
  11. <name>hbase.zookeeper.quorum</name>
  12. <value>cloud4:2181,cloud5:2181,cloud6:2181</value>
  13. </property>
  14. <property>
  15. <name>hbase.master</name>
  16. <value>cloud1</value>
  17. </property>
  18. <property>
  19. <name>zookeeper.session.timeout</name>
  20. <value>6000000</value>
  21. </property>
  22. </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

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

spark配置详见:

Spark 配置

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

各个节点的profile文件内容:

  1. export JAVA_HOME=/usr/java/jdk
  2. export HADOOP_HOME=/home/cloud/hadoop
  3. export SCALA_HOME=/home/cloud/scala
  4. export SPARK_HOME=/home/cloud/spark
  5. export HBASE_HOME=/home/cloud/hbase
  6. 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. UVALIVE 3891 The Teacher's Side of Math

    One of the tasks students routinely carry out in their mathematics classes is to solve a polynomial ...

  2. (十二)Linux内核驱动之poll和select

    使用非阻塞 I/O 的应用程序常常使用 poll, select, 每个允许一个进程来决定它是否可读或者写一个或多个文件而不阻塞. 这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来读或写.  ...

  3. 关于Solaris的一些小技巧

    关于Solaris的一些小技巧 http://blog.chinaunix.net/uid-9787800-id-2394301.html SunOS 操作命令及linux区别 http://blog ...

  4. docker常用命令,安装常用实例,一步式安装mysql

    刚来公司,跟公司测试环境项目的服务器,环境是linux Centos7.2  所有的tomcat都挂载在docker容器下,所以也就学习了一些简单的docker指令(学习之前请了解什么是docker, ...

  5. sqlserver中case when then用法

    sql语句判断方法之一,Case具有两种格式,简单Case函数和Case搜索函数. --简单Case函数 (CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' E ...

  6. ros msg array

    #include <stdio.h> #include <stdlib.h> #include "ros/ros.h" #include "std ...

  7. Go简单的Goroutine示例

    最简单的,接下来,会是竞争,加锁... package main import ( "fmt" "runtime" "sync" ) var ...

  8. DockerFile的编写和注意的一些知识点

    CMD,RUN,ENTRYPOINT之类的差别. VOLUMN和-V之间的差别. EXPOSE和-P的对应等. 今天上午写了一个脚本,可以传参数进IMAGE,让启动的CONTAINER具有不同的行为. ...

  9. Ionic2 window开发环境搭建

    1.软件安装 Node.jsCordova & Ionic CLIJava SDK (一定要安装jre1.8)Android SDK 可根据链接http://www.jianshu.com/p ...

  10. F - 等式(1/x + 1/y = 1/n)

    链接:https://www.nowcoder.com/acm/contest/90/F来源:牛客网 题目描述 给定n,求1/x + 1/y = 1/n (x<=y)的解数.(x.y.n均为正整 ...