1.部署

搭建方案(no_HA):

project

hadoop

hadoop

Hbase

zookeeper

主机

master1

Namenode

datanode(NM)

HMaster

HRegionServer

zk

slave1

SNM,JHS

datanode(NM)

HMaster

HRegionServer

zk

slave2

RM

datanode(NM)

HRegionServer

zk

2.LINUX基础环境搭建

(1) JDK

安装JDK(jdk-7u40-linux-i586.tar.gz);(此步骤所有机子都要做)

部署目录  /opt/ jdk1.7.0_45

配置环境变量

(1) vi/etc/profile.d/java.sh  (编辑文件)

(2) 添加

#set java environment

export JAVA_HOME=/opt/jdk1.7.0_45

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre:$PATH

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

(3) 验证是否安装成功:java –version

(2) hosts

修改hosts 

(此步骤所有机子都要做)

vi /etc/hosts

修改为:ip自定义

192.168.1.101   master1

192.168.1.102   slave1

192.168.1.103   slave2

(3) hostname

修改hostname(此步骤所有机子都要做)

vi/etc/sysconfig/network

修改为:

NETWORKING=yes

HOSTNAME=master1(slave1,slave2)

(4) ssh

配置ssh访问(看说明)

1)在(master1)当前用户(hadoop)主目录下执行

(1)$ ssh-keygen-t rsa

(2)cat.ssh/id_rsa.pub >> .ssh/authorized_keys

(3)chmod700  .ssh

(4)chmod644  .ssh/authorized_keys

2)master1到slave1,slave2机器的SSH无密码登录

接下来把authorized_keys复制到的slave1,slave2上。

scp~/.ssh/authorized_keys  远程用户名@远程服务器IP:~/

现在是master1可以无密码访问slave1,slave2.

要想实现任意两台机器互访,就在每台机器上都生成id_rsa和id_rsa.pub,然后把每台机器的公钥都添加进authorized_keys,然后把authorized_keys分发到所有机器上

(5) 防火墙和selinux

关闭机器的防火墙和selinux(此步骤所有机子都要做)

关闭防火墙:

#/etc/init.d/iptables stop #关闭防火墙。

#chkconfig iptables off #关闭开机启动。

关闭selinux:

vi/etc/selinux/config,

把SELINUX=enforcing改成SELINUX=disable;需要重启机器

(6) 时间一致

授时服务(此步骤所有机子都要做)

配置时间同步

crontab-e

/usr/sbin/ntpdatecn.pool.ntp.org

手动同步时间

/usr/sbin/ntpdatecn.pool.ntp.org

(7)用户和本地目录

创建用户账号和Hadoop部署目录和数据目录(此步骤所有机子都要做)

#创建hadoop 用户

/usr/sbin/groupaddhadoop

#分配hadoop 到 hadoop组中

/usr/sbin/useraddhadoop -g hadoop

#创建hadoop,hbase,zookeepr部署目录

opt/hadoop-2.2.0

opt/hbase-0.96.0-hadoop2

opt/zookeeper-3.4.5

#修改目录结构权限为为hadoop

#本地文件系统涉及到的目录

mkdir -p /data/tmp_hadoop  /data/hdfs/dn    /data/hdfs/nn   

/data/log/hadoop-hdfs   /data/log/hadoop-yarn  /data/log/hadoop-mapred

/data/yarn/local /data/yarn/logs

mkdir -p

/data/zookeeper/data/data/zookeeper/datalog

/data/tmp_hbase

/data/hbase

/data/journal

3.zookeeper集群安装

(1)部署

部署3个节点的 ZooKeeper,分别部署在master1、slave1、slave2三台机器上。ZooKeeper 部署的节点数为奇数个。

每个 ZooKeeper节点:

部署目录:/opt/zookeeper-3.4.5

创建目录

mkdir –p/data/zookeeper/data

mkdir –p/data/zookeeper/datalog

(2)环境变量

vi/etc/profile.d/zookeeper.sh

添加

#set zookeeper environment

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.5

export PATH=$PATH:$ZOOKEEPER_HOME/bin

export ZOO_LOG_DIR=/data/zookeeper/datalog

(3)zoo.cfg

#编辑zookeeper-3.4.5 /conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir= /data/zookeeper/data

dataLogDir=/data/zookeeper/datalog

clientPort=2181

server.1=master1:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

(4)同步zookeeper集群

(5) myid

在各个zookeepr节点上修改myid

在dataDir目录中创建名为 “myid” 的文件,在 server.1 的myid 文件中写入”1”这个数字,在 server.2 的myid 文件写入”2”, server.3 写”3”。

比如:在master3上

echo  1   > /data/zookeeper/data/myid

(6)启动

zookeeper(所有zookeeper服务器都要运行)

zkServer.sh start

jps: QuorumPeerMain

4.HADOOP 集群

(1)部署

部署目录:/opt/hadoop-2.2.0

创建目录

master1,slave1(NN,SNN)

mkdir –p /data/hdfs/nn

所有hadoop节点:

mkdir–p /data/tmp_hadoop   /data/hdfs/dn  /data/log/hadoop-hdfs   /data/log/hadoop-yarn  /data/log/hadoop-mapred  /data/yarn/local  /data/yarn/logs

(2)环境变量

vi/etc/profile.d/hadoop.sh

添加

#set hadoop environment

export HADOOP_HOME=/opt/hadoop-2.2.0

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

(3)配置文件修改

1) 配置masters,(这里指定Secondarynamenode)

slave1

2) 配置slaves

#标识集群的datanode

master1

lave1

slave2

3) 配置hadoop-env.sh

export JAVA_HOME=/opt/jdk1.7.0_45

export HADOOP_LOG_DIR=/data/log/hadoop-hdfs

export YARN_LOG_DIR=/data/log/hadoop-yarn

export HADOOP_MAPRED_LOG_DIR=/data/log/hadoop-mapred

4) 配置yarn-env.sh

export JAVA_HOME=/opt/jdk1.7.0_45

5) 编辑core-site.xml

<property>

<name>hadoop.tmp.dir</name>

<value>/data/tmp_hadoop</value>

<description>Abasefor other temporary directories.</description>

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master1:9000</value>

</property>

<property>

<name>fs.trash.interval</name>

<value>1440</value>

<!--24h,0代表关闭-->

</property>

<property>

<name>fs.trash.checkpoint.interval</name>

<value>1440</value>

<!--一般小于等于fs.trash.interval-->

</property>

<!-- i/o properties -->

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

<!--读写序列化文件缓冲区大小-->

</property>

<!-- Local file system -->

<property>

<name>dfs.blocksize</name>

<value>67108864</value>

<!--268435456256M-->

</property>

6) 编辑hdfs-site.xml

<!--需要配置本地目录的地方-->

<property>

<name>dfs.namenode.name.dir</name>

<value>/data/hdfs/nn</value>

<!--file://${hadoop.tmp.dir}/dfs/name-->

<!--命名空间和事务处理日志-->

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/data/hdfs/dn</value>

<!--file://${hadoop.tmp.dir}/dfs/data-->

<!--DataNode本地文件存储的路径-->

</property>

<!--security -->

<property>

<name>dfs.permissions.superusergroup</name>

<value>hadoop</value>

</property>

<!--Secondary Namenode-->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master2:9001</value>

</property>

<property>

<name>dfs.namenode.handler.count</name>

<value>100</value>

<!--namenode服务线程数-->

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

<!--冗余备份数目,一般为3-->

</property>

7) 编辑mapred-site.xml

<!-- MapReduce -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

<!--运行框架设置为 HadoopYARN-->

</property>

<property>

<name>mapreduce.map.memory.mb</name>

<value>1536</value>

<!--Maps最大资源-->

</property>

<property>

<name>mapreduce.map.java.opts</name>

<value>-Xmx1024M</value>

<!--MapsChild JVM的heap-size堆大小-->

</property>

<property>

<name>mapreduce.reduce.memory.mb</name>

<value>3072</value>

<!--Reduces最大资源-->

</property>

<property>

<name>mapreduce.reduce.java.opts</name>

<value>-Xmx2560M</value>

<!--ReducesChild JVM的heap-size堆大小-->

</property>

<property>

<name>mapreduce.task.io.sort.mb</name>

<value>512</value>

<!--sort整理数据最大使用内存设置-->

</property>

<property>

<name>mapreduce.task.io.sort.factor</name>

<value>100</value>

<!--整理数据时一次合并的流数量-->

</property>

<property>

<name>mapreduce.reduce.shuffle.parallelcopies</name>

<value>50</value>

<!--Reduce运行的最大并行复制数量,用来获取大量maps的输出-->

</property>

<!--JobHistoryServer,另一部分配置在yarn-site.xml-->

<property>

<name>mapreduce.jobhistory.address</name>

<value>slave1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>slave1:19888</value>

<!--MRJobHistory服务的web界面-->

</property>

<property>

<name>mapreduce.jobhistory.intermediate-done-dir</name>

<value>/mr-history/tmp</value>

<!--MRjobs写入history files的目录-->

</property>

<property>

<name>mapreduce.jobhistory.done-dir</name>

<value>/mr-history/done</value>

<!--JHS管理的history files目录-->

</property>

<property>

<name>mapreduce.shuffle.port</name>

<value>13562</value>

</property>

8) 编辑yarn-site.xml

<!--For ResourceManager-->

<property>

<name>yarn.nodemanager.local-dirs</name>

<value>/data/yarn/local</value>

<!--${hadoop.tmp.dir}/nm-local-dir-->

<!--中间数据写入的路径-->

</property>

<property>

<name>yarn.nodemanager.log-dirs</name>

<value>/data/yarn/logs</value>

<!--${yarn.log.dir}/userlogs-->

<!--Whereto store container logs-->

</property>

<property>

<name>yarn.nodemanager.remote-app-log-dir</name>

<value>/tmp/logs</value>

<!--开启日志聚合后,应用程序的日志将被移到该HDFS目录下-->

</property>

<property>

<name>yarn.nodemanager.remote-app-log-dir-suffix</name>

<value>logs</value>

<!--(远程日志目录被创建)${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}-->

</property>

<property>

<name>dfs.datanode.max.xcievers</name>

<value>4096</value>

<!--Datanode 有一个同时处理文件的上限, Hbase中要求修改的-->

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

<!--是否启用日志聚合-->

</property>

<!-- ResourceManager Configs -->

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>slave2:8088</value>

<!--RMweb-->

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>slave2:8033</value>

<!--RM admin interface.-->

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>slave2:8032</value>

<!--RM设置客户端提交job-->

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>slave2:8030</value>

<!--schedulerinterface -->

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>slave2:8031</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

<!--resource scheduler class-->

</property>

<property>

<name>yarn.scheduler.minimum-allocation-mb</name>

<value>512</value>

<!--RM分配给每个container的最小内存-->

</property>

<property>

<name>yarn.scheduler.maximum-allocation-mb</name>

<value>4096</value>

<!--RM分配给每个container的最大内存-->

</property>

<!--NodeManager-->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>8192</value>

<!--定义NM上可以分配给container的物理内存总量-->

</property>

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>2.1</value>

<!--最大虚拟内存比例for each container,-->

</property>

<property>

<name>yarn.nodemanager.log.retain-seconds</name>

<value>10800</value>

<!--日志在NM本地保存的默认时间,日志聚合关闭时有效-->

</property>

<!--JobHistoryServer-->

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>-1</value>

<!--设置聚合日志保留时间-->

</property>

<property>

<name>yarn.log-aggregation.retain-check-interval-seconds</name>

<value>-1</value>

<!--参照聚合日志保留时间-->

</property>

 

(4)同步hadoop节点

(5) 启动

  master1(第一次需要格式化namenode)

hadoop namenode -format

启动(namenode,secondarynamenode,datanode)

start-dfs.sh

slave2,启动yarn(RM,NM)

start-yarn.sh

slave1,启动JHS

mr-jobhistory-daemon.sh start historyserver

访问:http://master1:50070

http://slave2:8088

http://slave1:19888

5.Hbase集群安装

(1)部署

前提:Hadoop集群,zookeeper集群已搭建好。

部署目录:/opt/hbase-0.96.0-hadoop2

Hbase节点上创建目录:

mkdir –p/data/hbase/logs

mkdir –p/data/hbase/tmp_hbase

(2)环境变量

vi/etc/profile.d/java.sh  (编辑文件)

#set HBase environment

export HBASE_HOME=/opt/hbase-0.96.0-hadoop2

export PATH=$PATH:$HBASE_HOME/bin

export HBASE_HEAPSIZE=4096

(3)修改最大文件句柄限制

HBase是数据库,会在同一时间使用很多的文件句柄。大多数linux系统使用的默认值1024是不能满足的,

(ubuntu为例)

gedit  /etc/security/limits.conf

hadoop  -nofile  32768

hadoop  soft/hard nproc 32000

gedit  /etc/pam.d/ common-session

session required  pam_limits.so

(4)替换包

在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBaselib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。(habse-0.96.0+hadoop-2.2.0,其中替换17个jar包

(5) 配置文件

1)修改/conf/regionservers文件,增加regionserver

master1

slave1

slave2

2)修改 /conf/hbase-env.sh

export  JAVA_HOME=/opt/jdk1.7.0_45

export HBASE_CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop

export HBASE_MANAGES_ZK=false

export HBASE_LOG_DIR=/data/hbase/logs

3)修改/conf/hbase-site.xml文件

<property>

<name>hbase.master</name>

<value>master1:60000</value>

</property>

<!--region server的共享目录,用来持久化Hbase-->

<property>

<name>hbase.rootdir</name>

<value>hdfs://master1:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>master1,slave1,slave2</value>

<description>The directory shared by regionservers. </description>

</property>

<property>

<name>zookeeper.session.timeout</name>

<value>60000</value>

</property>

<property>

<name>hbase.tmp.dir</name>

<value>/data/hbase/tmp_hbase</value>

</property>

<property>

<name>hbase.regionserver.restart.on.zk.expire</name>

<value>true</value>

</property>

<property>

<name>hbase.regionserver.handler.count</name>

<value>10</value>

<description> 处理用户请求的线程数量,默认10</description>

</property>

 

(6)同步hbase节点

(7)启动

master1上

bin/start-hbase.sh

访问  http://master1:60010

测试:bin/hbase shell

 

1-0 三台PC集群的搭建(noHA)相关推荐

  1. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

  2. 【Redis】redis-3.0.0安装以及集群的搭建

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sds15732622190/artic ...

  3. 2W 字详解 Redis 6.0 集群环境搭建实践

    原文链接:https://www.cnblogs.com/hueyxu/p/13884800.html 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环 ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  5. spark-1.2.0 集群环境搭建

    1.下载scala2.11.4版本 下载地址为:http://www.scala-lang.org/download/2.11.4.html ,也可以使用wget http://downloads.t ...

  6. Hadoop2.0高可用集群搭建【保姆级教程】

    搭载Hadoop2.0高可用集群 说明 准备 下载好所需要的文件 目录准备 虚拟机网络配置(可能会在其他文章中讲到) 文件的安装 配置环境变量 环境变量的验证 关闭防火墙 配置Hadoop高可用集群 ...

  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装

    一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...

  8. 『高级篇』docker之DockerSwarm的集群环境搭建(28)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...

  9. Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建

    Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建 1. 前言 2. 安装三个Ubuntu 2.1 三个机器都关闭防火墙 2.2 三个机器都关闭swap 2.3 三个机器都 ...

最新文章

  1. 设计模式之解释器模式(Interpreter)摘录
  2. 使用XML声明自定义Android UI元素
  3. snmp验证方式总结
  4. Acwing第 32 场周赛【完结】
  5. MySQL-04:数据内容操作-增删改查-基本命令笔记
  6. 配置nginx作为静态资源服务器 css,js,image等资源直接访问
  7. 我今年挣了......
  8. LeetCode OJ - Best Time to Buy and Sell Stock II
  9. 【JAVA】java 堆溢出分析
  10. 【nginx笔记】系统参数设置-使Nginx支持更多并发请求的TCP网络参数
  11. c语言头结点存放元素,【笔记】带头节点的单链表的C语言实现
  12. MediaRecorder之视频录制
  13. 11.2.0.3 RAC数据库m000进程报错ORA-04031错误的解决
  14. 以太坊是什么? 以及以太坊如何工作的?
  15. 180多个Web应用程序测试示例测试用例
  16. SPSS--回归-多元线性回归模型案例解析!(一)
  17. 学完java基础语法之后用来练习的不依赖框架的小项目
  18. 中国欲量产AI人才,本科招生爆发后如何培养?
  19. P2P对等网络技术原理整合
  20. python如何撤销_python如何查看微信消息撤回

热门文章

  1. 如何挑选一个合适的APP做流量引导了,什么样的群体流量比较大
  2. android获取mipmap路径,mipmap 目录和drawable 目录有什么区别
  3. 记录阿里云Elastic Search实例使用经验
  4. opencv重新调整图片大小
  5. AKShare 获取个股历史行情数据与K线可视化
  6. 跟团游渐渐不敌自由行,如何走出困局?
  7. oracle--创建销售表
  8. BUUCTF MISC 小明的保险箱
  9. 网红、科技大佬、作家,跨界喜剧王罗永浩才是打造个人IP的典范
  10. 读取xml到DataSet中去