设为首页 收藏本站
查看: 829|回复: 0

Hadoop+Spark+Hbase部署整合篇

[复制链接]

尚未签到

发表于 2015-11-11 13:31:14 | 显示全部楼层 |阅读模式
  之前的几篇博客中记录的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
版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137929-1-1.html 上篇帖子: Hadoop本地模式 下篇帖子: 第一个Hadoop程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表