基础服务环境搭建

Posted by YueLng Chen on 2018-01-18

这篇文章主要是针对大数据平台的搭建,主要包括的内容有

  • vagrant虚拟机环境搭建
  • Hadoop集群搭建
  • memcached集群搭建
  • storm集群搭建
    一些架构可行的架构:Flume + Kafka + Strom + Hbase

    使用vagrant搭建系统

    安装

    http://www.vagrantbox.es/ 找下载需要的 box , 譬如 Ubuntu 14.10(based on amd64 server iso file

    初始化&配置

    add 镜像并初始化 box
    1
    2
    vagrant box add ubuntu-14.04 xxxxx(box path)
    vagrant init

配置Vagrantfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.define :memcached1 do |memcached|
memcached.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
memcached.vm.box = "ubuntu-14.04"
memcached.vm.hostname = "memcached1"
memcached.vm.network :private_network,ip:"11.11.1.1"
end
config.vm.define :memcached2 do |memcached|
memcached.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
memcached.vm.box = "ubuntu-14.04"
memcached.vm.hostname = "memcached2"
memcached.vm.network :private_network,ip:"11.11.1.2"
end
config.vm.define :memcached3 do |memcached|
memcached.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
memcached.vm.box = "ubuntu-14.04"
memcached.vm.hostname = "memcached3"
memcached.vm.network :private_network,ip:"11.11.1.3"
end
end

出错

出现vboxsf错误使用

1
vagrant plugin install vagrant-vbguest

没下载成功

1
gem install vagrant-vbguest

或者参考segmentfault的文章手工为Vagrant安装VBoxGuestAdditions

搭建Hadoop集群

1)安装SSH
sudo apt-get install ssh
2)安装java
sudo apt-get install jdk
或者直接下载sun公司的jdk文件进行安装
3)安装Hadoop
hadoop包,北京交通大学镜像http://mirror.bjtu.edu.cn/apache/hadoop/common/hadoop-2.6.0/
墙裂推荐,下面的安装教程,按照下面的来完全没问题,如果出现问题,应该重装下系统再装Hadoop!

B、通过APT包安装

1
sudo apt-get install memcached

测试是否安装成功

1
2
3
4
grid@slavenode2:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

见到以上显示即连接成功。

memcached的基本设置:

1.启动Memcache的服务器端:

1
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

  • -d选项是启动一个守护进程,
  • -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
  • -u是运行Memcache的用户,我这里是root,
  • -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
  • -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
  • -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
  • -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
    2.如果要结束Memcache进程,执行:
    1
    # kill `cat /tmp/memcached.pid`

Nginx+Memcached+Tomcat集群配置实践(Sticky Session)

实现menmcached分布式存储

memcached本身不提供分布式的解决方案,因此memcached集群环境是一个个memcached服务器的堆积,主要有两种方式实现分布式,客户端做路由和服务器端集群。

客户端做路由

可以使用一致性hash算法做路由,这里有一致性hash算法的介绍一致性 hash 算法( consistent hashing )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public MemcachedNode getPrimary(final String k) {
MemcachedNode rv=getNodeForKey(hashAlg.hash(k));
assert rv != null : "Found no node for key " + k;
return rv;
}
MemcachedNode getNodeForKey(long hash) {
final MemcachedNode rv;
if(!ketamaNodes.containsKey(hash)) {
// Java 1.6 adds a ceilingKey method, but I'm still stuck in 1.5
// in a lot of places, so I'm doing this myself.
SortedMap<Long, MemcachedNode> tailMap=ketamaNodes.tailMap(hash);
if(tailMap.isEmpty()) {
hash=ketamaNodes.firstKey();
} else {
hash=tailMap.firstKey();
}
}
rv=ketamaNodes.get(hash);
return rv;
}

这段代码非常清晰,就是通过ketamaNodes这个数据结构按照一致性hash算法把node分区,每次都把映射到一个分区的key对于到负责这个分区的node上。

在Memcache的实际使用中,遇到的最严重的问题,就是在增减服务器的时候,会导致大范围的缓存丢失,从而可能会引导数据库的性能瓶颈,这就需要一致性hash算法,通过存取时选定服务器算法的改变来实现。

我们大致能弄明白在客户端如何做路由来让memcached分布式,其实在大多数的项目中,以上这些简单的处理办法就足够了

memcached服务端做集群

Facebook数据的存储都基本在memcached上完成,后端的mysql仅仅只是做持久化的作用,由于数据量巨大,实现了类似于mysql读写分离的策略,这方面资料较少,未完待续

安装storm集群

  • 搭建Zookeeper集群;
  • 安装Storm依赖库;
  • 下载并解压Storm发布版本;
  • 修改storm.yaml配置文件;
  • 启动Storm各个后台进程

netstat -apn|grep <端口号>
netstat -apn|grep 80
ps -aux|grep <进程号>
lsof -i:21

参考资料

1.vagrant安装指南作者:segmentfault的ytwman
2.Vagrant常见问题汇总Vagrant启动会时无响应,Timeout,不能挂载共享文件夹
3.vagrant使用入门
4.vagrant的基本配置
5.Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
6.ubuntu memcached安装和java中memcached使用demo
7.零基础学习hadoop到上手工作线路指导(编程篇)