当前位置:文档之家› mesos集群在centos部署文档

mesos集群在centos部署文档

mesos集群在centos部署文档
mesos集群在centos部署文档

# 一、环境介绍#

单机环境、跳板机(根据自己的需要即可)

[root@Siffre ~]# cat /etc/redhat-release

CentOS release 6.6 (Final)

[root@Siffre ~]# uname -r

2.6.32-504.el6.x86_64

# 二、安装Docker #

## 2.1 下载官网rpm包

[root@Siffre ~]# wget https://https://www.doczj.com/doc/009657793.html,/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rp m

## 2.2安装rpm包##

安装前我们需要安装一个依赖包:

[root@Siffre ~]# yum installlibcgroup -y

安装rpm包:

[root@Siffre ~]# rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm

## 2.3检查并启动Docker ##

检查docker版本

[root@Siffre ~]# docker version

Client version: 1.7.1

Client API version: 1.19

Go version (client): go1.4.2

Git commit (client): 786b29d

OS/Arch (client): linux/amd64

Server version: 1.7.1

Server API version: 1.19

Go version (server): go1.4.2

Git commit (server): 786b29d

OS/Arch (server): linux/amd64

启动docker

service docker start

/etc/init.d/docker start

# 三、服务安装#

数人科技源:

Curl -o /etc/yum.repos.d/dataman.repo http://get.dataman.io/repos/centos/6/6/dataman.repo

官方源:

wget https://www.doczj.com/doc/009657793.html,/dist/mesos/0.23.0/mesos-0.23.0.tar.gz

官方Git源:

git clone https://https://www.doczj.com/doc/009657793.html,/repos/asf/mesos.git

**以下根据数人科技的源安装,后期会编译安装**

## 3.1 zookeeper ##

导入源:

[root@Siffre ~]# rpm -Uvh https://www.doczj.com/doc/009657793.html,/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rp m

yum安装

[root@Siffre ~]# yum install zookeeper zookeeper-server -y

## 3.2mesos ##

导入源:

[root@Siffre ~]# curl -o /etc/yum.repos.d/dataman.repo http://get.dataman.io/repos/centos/6/6/dataman.repo

yum安装:

[root@Siffre ~]# yum installmesos -y

## 3.3 marathon ##

导入源:

[root@Siffre ~]# curl -o /etc/yum.repos.d/dataman.repo http://get.dataman.io/repos/centos/6/6/dataman.repo

yum安装:

[root@Siffre ~]# yum install marathon -y

## 3.4 haproxy ##

yum安装即可:

[root@Siffre ~]# yum installhaproxy -y

## 3.5 bamboo ##

导入源:

[root@Siffre ~]# mkdir /application

[root@Siffre ~]# cd /application/

[root@Siffre application]# wget https://www.doczj.com/doc/009657793.html,/download/dataman-bamboo-0.9.0.tar.gz [root@Siffre application]# ls

dataman-bamboo-0.9.0.tar.gz

[root@Siffre application]# tar -zxf dataman-bamboo-0.9.0.tar.gz

[root@Siffre application]# ls

bamboo dataman-bamboo-0.9.0.tar.gz

# 四、配置服务参数#

## 4.1 Mesos ##

自身配置:

#配置mesos在zk的使用目录

echo "zk://10.3.10.29:2181/mesos" > "/etc/mesos/zk" #zookeeper2181默认端口

### 4.1.1 Mesos-Master ###

#指定master配置目录

MESOS_MASTER_CONF_DIR="/etc/mesos-master"

#指定master的主机名

echo "10.3.10.29" > $MESOS_MASTER_CONF_DIR/hostname

这里的10.3.10.29是当前机器的地址ipconfig –a查看

#用本机IP表示#指定master的ip

echo "0.0.0.0" > $MESOS_MASTER_CONF_DIR/ip

#副本的仲裁数量的大小(集群配置很重要,本次试验只有1台所以写1)

echo "1" > $MESOS_MASTER_CONF_DIR/quorum

#注册表中存储持久性信息的地址

echo "/var/lib/mesos" > $MESOS_MASTER_CONF_DIR/work_dir

### 4.1.2 Master-Slave ###

#指定slave配置目录

MESOS_SLAVE_CONF_DIR="/etc/mesos-slave"

#指定slave的主机名(这里不能用localhost)

echo "10.3.10.29 " > $MESOS_SLAVE_CONF_DIR/hostname

这里的10.3.10.29也是一样写当前机器的地址

#用IP表示#指定slave支持的容器类型

echo "docker,mesos" > $MESOS_SLAVE_CONF_DIR/containerizer

s#指定slave的ip

echo "0.0.0.0" > $MESOS_SLAVE_CONF_DIR/ip

#执行器注册超时时间

echo "5mins" > $MESOS_SLAVE_CONF_DIR/executor_registration_timeout

#指定mesos资源控制的内容(这里只有打开对CPU和内存的控制)

echo "cgroups/cpu,cgroups/mem" > $MESOS_SLAVE_CONF_DIR/isolation

## 4.2 marathon ##

#创建marathon目录

mkdir /etc/marathon/conf -p

#指定marathon配置目录

MARATHON_CONF_DIR="/etc/marathon/conf"

#指定marathon在zk目录路径

echo "zk://10.3.10.29:2181/marathon" > $MARATHON_CONF_DIR/zk

这里的10.3.10.29需要变成当前的地址

#事件订阅模式

echo "http_callback" > $MARATHON_CONF_DIR/event_subscriber

#指定marathon主机名

echo "10.3.10.29" > $MARATHON_CONF_DIR/hostname

这里的10.3.10.29也是需要变成当前的地址

#用IP表示#指定mesos在zk目录路径

echo "zk://10.3.10.29:2181/mesos" > $MARATHON_CONF_DIR/master

这里的10.3.10.29也是需要变成当前的地址

## 4.3 bamboo ##

### 4.3.1 注释模版的8080部分,否则该8080端口和marathon自带默认端口冲突,端口可以改成9090或者其他只要不是8080就可以###

[root@Siffre application]# vim /application/bamboo/config/haproxy_template.cfg

#注释以下部分

frontendwebsocket-in

#注意是websocket-in而不是http-in

bind *:8080

{{ $services := .Services }}

{{ range $index, $app := .Apps }} {{ if

$app.Env.BAMBOO_WEBSOCKET_OPEN }} {{ if hasKey $services $app.Id }} {{ $service := getService $services $app.Id }}

acl {{ $app.EscapedId }}-websocket-aclrule {{ $service.Acl}}:8080

use_backend {{ $app.EscapedId }}-websocket-cluster if {{ $app.EscapedId }}-websocket-aclrule

{{ end }} {{ end }} {{ end }}

stats enable

# CHANGE: Your stats credentials

statsauthadmin:admin

statsuri /haproxy_stats

{{ range $index, $app := .Apps }} {{ if

$app.Env.BAMBOO_WEBSOCKET_OPEN }}backend {{ $app.EscapedId }}-websocket-cluster{{ if $app.HealthCheckPath }}

optionhttpchk GET {{ $app.HealthCheckPath }}{{ end }}

balanceleastconn

optionhttpclose

optionforwardfor

{{ range $page, $task := .Tasks }}

server {{ $app.EscapedId }}-{{ $task.Host }}-{{ index $task.Ports 1 }}

{{ $task.Host }}:{{ index $task.Ports 1 }} {{ end }}

{{ end }}

{{ end }}

#提示:由于centos6.6安装的haproxy版本问题,下面两句也需要注释掉

global

log /dev/log local0

log /dev/log local1 notice

chroot /var/lib/haproxy

#stats socket /run/haproxy/admin.sock mode 660 level admin #注释此句

stats timeout 30s

userhaproxy

grouphaproxy

daemon

# Default SSL material locations

ca-base /etc/ssl/certs

crt-base /etc/ssl/private

#ssl-default-bind-options no-sslv3 #注释此句

# Default ciphers to use on SSL-enabled listening sockets.

# For more information, see ciphers(1SSL).

# ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL

### 4.3.2 修改bamboo配置###

[root@Siffre application]# vim bamboo/config/production.json

{ "Marathon":

{"Endpoint": "http://10.3.10.29:8080" }, "Bamboo": {"Endpoint": "http://10.3.10.29:8000",

"Zookeeper": {

"Host": "10.3.10.29:2181",

"Path": "/marathon-haproxy/state",

"ReportingDelay": 5} },

"HAProxy":

{"TemplatePath": "/application/bamboo/config/haproxy_template.cfg",

"OutputPath": "/etc/haproxy/haproxy.cfg",

"ReloadCommand": "PIDS=`pidofhaproxy`; haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $PIDS && while ps -p $PIDS; do sleep 0.2; done" },

"StatsD":

{"Enabled": false,

"Host": "10.3.10.29:8125",

"Prefix": "bamboo-server.development." }}

## 4.4 zookeeper ##

初始化

service zookeeper-server init --myid=1 #单机环境可以不初始化

提示:若不能更改添加--force

service zookeeper-server init --myid=1 --force

# 五、服务启动#

## 5.1 zookeeper ##

#启动命令

service zookeeper-server start

#查看进程

ps -ef|grepzookeeper|grep -v grep

#查看日志

tail -f /var/log/zookeeper/zookeeper.log

提示:

若zookeeper出现无法启动问题,可能是由于跳板机、sudo、ssh远程登录导致相关变量时效,无法启动java相关程序

解决方法:安装jdk7的rpm包,不建议去手动去改,可能会出错

安装方法:

wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie"

"https://www.doczj.com/doc/009657793.html,/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-x64.rpm" -O jdk-7-linux-x64.rpm

## 5.2 Mesos-Master ##

# 启动命令

nohupmesos-master --zk=zk://10.3.10.29:2181/mesos --ip=0.0.0.0 --work_dir=/var/lib/mesos --quorum=1 --log_dir=/var/log/mesos&>> /var/log/mesos/mesos-master.log & #查看进程状态

psaxuf | grepmesos-master | grep -v grep

#查看日志

tail -f /var/log/mesos/mesos-master.log

## 5.3Mesos-Slave ##

# 启动命令

nohupmesos-slave --master=10.3.10.29:5050 --hostname=10.3.10.29 &>> /var/log/mesos/mesos-slave.log &

#查看进程状态

psaxuf | grepmesos-slave | grep -v grep

#查看日志

tail -f /var/log/mesos/mesos-slave.log

## 5.4 marathon ##

#添加目录和日志文件

mkdir /var/log/marathon

touch /var/log/marathon/marathon.log

# 启动命令

nohup marathon &>> /var/log/marathon/marathon.log &#查看进程状态psaxuf | grep marathon | grep -v grep

#查看日志

tail -f /var/log/marathon/marathon.log

## 5.5 haproxy ##

# 启动命令

servicehaproxy start

#进程状态

psaxuf | grephaproxy | grep -v grep

## 5.6 bamboo ##

# 启动命令

nohup /application/bamboo/bamboo -config /application/bamboo/config/production.json -log /var/log/bamboo-server.log &>>/var/log/bamboo.log &

#查看日志

tail -f /var/log/bamboo.log

提示:

1、默认安装haproxy时,相关文件的路径可能会有些不同。这时在启动bamboo时,会发现bamboo启动失败,查看日志:找不到错误类型的文件

解决方法:

[root@Siffrehaproxy]# cd /usr/share/haproxy/

[root@Siffrehaproxy]# ls

400.http 403.http 408.http 500.http 502.http 503.http 504.http README

#将这些文件复制或移到以下目录

[root@Siffrehaproxy]# mkdir /etc/haproxy/errors

[root@Siffrehaproxy]# mv * /etc/haproxy/errors

[root@Siffrehaproxy]# cd /etc/haproxy/errors/

[root@Siffre errors]# ls

400.http 403.http 408.http 500.http 502.http 503.http 504.http README

2、有时你会在日志文件里面看到这样一个错误提示:STATSD_ENABLED没有设置

解决方法:export STATSD_ENABLED=false/true

此处是看源码得来的,具体详见bamboo源码!

# 六、镜像制作#

制作镜像的方法很多哦!(至少4种)这里我们不用dockerfile!

## 6.1 基础镜像制作##

### 6.1.1 设置docker镜像源###

[root@Siffre ~]# yum install -y yum-priorities && rpm -ivh https://www.doczj.com/doc/009657793.html,/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

### 6.1.2 安装febootstrap,用来制作centos镜像,到时候会生成个centos的镜像### # 如果没有安装docker,则需要先安装docker

[root@Siffre ~]# servicedocker start

# 启动docker

[root@Siffre ~]# yum -y install febootstrap # 制作docker镜像工具

### 6.1.3 作CentOS镜像文件centos6-image目录###

[root@Siffre ~]# febootstrap -i bash -iwget -i yum -iiputils -iiproute -i man -i vim -iopenssh-server -iopenssh-clients -i tar -igzip centos6 centos6-image https://www.doczj.com/doc/009657793.html,/centos/6/os/x86_64/

### 6.1.4 复制home目录基础文件到root目录###

这时root目录下没有任何文件,也没有隐藏的点文件,如:.bash_logout .bash_profile .bashrc 如果这时制作出来的镜像使用ssh登录,会直接进入根目录下,而一般镜像都是进入root 目录下的,所以可以在centos6-image目录的root目录把.bash_logout .bash_profile .bashrc 这三个文件设置一下。

[root@Siffre ~]# cd centos6-image &&cpetc/skel/.bash* root/

### 6.1.5生成基础镜像###

`[root@Siffre centos6-image]# tar -c .|docker import - centos6-base `

### 6.1.6 查看镜像,也可以直接进入centos6-base查看###

#这个是查看所有生成的镜像

[root@Siffre centos6-image]# docker images

#进终端(没有ssh服务),-i分配终端,-t表示在前台执行,-d表示在后台运行

[root@Siffre centos6-image]# docker run -i -t centos6-base:latest /bin/bash

## 6.2制作中间件镜像##

根据基础镜像制作jdk7的docker镜像

[root@Siffre centos6-image]# mkdir -p /application/data/jdk7

[root@Siffre centos6-image]# cd /application/data/jdk7

[root@Siffre jdk7]# vim Dockerfile #注意换行

FROM centos6-base

MAINTAINER Siffre

# install epel

RUN yum install -y yum-priorities && rpm -ivh https://www.doczj.com/doc/009657793.html,/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

# install jdk7

RUN yum update -y

RUN yum install -y java-1.7.0-openjdk

#构建镜像

[root@Siffre jdk7]# docker build -t jdk7 .

## 6.3 制作应用镜像##

根据jdk7的镜像生成tomcat7镜像

[root@Siffre jdk7]# mkdir tomcat7

[root@Siffre jdk7]# cd tomcat7/

[root@Siffre tomcat7]# vim Dockerfile

FROM jdk7

MAINTAINER Siffre

ENV CATALINA_HOME /usr/local/tomcat

ENV PATH $CATALINA_HOME/bin:$PATH

RUN mkdir -p "$CATALINA_HOME"

WORKDIR $CATALINA_HOME

# see https://https://www.doczj.com/doc/009657793.html,/dist/tomcat/tomcat-8/KEYS

RUN gpg --keyserver https://www.doczj.com/doc/009657793.html, --recv-keys \

05AB33110949707C93A279E3D3EFE6B686867BA6 \

07E48665A34DCAFAE522E5E6266191C37C037D42 \

47309207D818FFD8DCD3F83F1931D684307A10A5 \

541FBE7D8F78B25E055DDEE13C370389288584E7 \

61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \

713DA88BE50911535FE716F5208B0AB1D63011C7 \

79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \

9BA44C2621385CB966EBA586F72C284D731FABEE \

A27677289986DB50844682F8ACB77FC2E86E29AC \

A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \

DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \

F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \

F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 7

ENV TOMCAT_VERSION 7.0.63

ENV TOMCAT_TGZ_URL https://https://www.doczj.com/doc/009657793.html,/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apac he-tomcat-$TOMCAT_VERSION.tar.gz

RUN set -x \

&& curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \

&& curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \

&&gpg --verify tomcat.tar.gz.asc \

&& tar -xvf tomcat.tar.gz --strip-components=1 \

&&rm bin/*.bat \&&rm tomcat.tar.gz*

EXPOSE 8080

CMD ["catalina.sh", "run"] #自带的脚本

#构建镜像

[root@Siffre tomcat7]# docker build -t tomcat7 .

# 七、marathon添加app应用#

## 7.1 编写添加APP脚本##

[root@localhost marathon-app]# vim dataman-tomcat-test.sh

curl -v -X POST http://10.3.10.29:8080/v2/apps -H Content-Type:application/json -d '{ "id": "dataman-tomcat-test", #ID自定义即可

"cpus": 0.1,

"mem": 128.0,

"instances": 3,

"container":

{ "type": "DOCKER",

"docker":

{"image": "tomcat7:latest",#镜像ID

"network": "BRIDGE", "portMappings": [

{ "containerPort": 8080, "hostPort": 0,

"servicePort": 10000,

"protocol": "tcp" } ]}

},

"healthChecks":

[{ "protocol": "HTTP",

"portIndex": 0,

"path": "/",

"gracePeriodSeconds": 5,

"intervalSeconds": 20,

"maxConsecutiveFailures": 3

} ]}'

## 7.2 执行dataman-tomcat-test.sh ##

[root@localhost marathon-app]# sh dataman-tomcat-test.sh

#显示如下信息

* About to connect() to 10.3.10.29 port 8080 (#0)

* Trying 10.3.10.29... connected

* Connected to 10.3.10.29 (10.3.10.29) port 8080 (#0)

> POST /v2/apps HTTP/1.1

> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2

> Host: 10.3.10.29:8080

> Accept: */*

>Content-Type:application/json

> Content-Length: 839

>

< HTTP/1.1 201 Created

< X-Marathon-Leader: http://10.3.10.29:8080

< Cache-Control: no-cache, no-store, must-revalidate

< Pragma: no-cache

< Expires: 0

< Location: http://10.3.10.29:8080/v2/apps/dataman-tomcat-test

< Content-Type: application/json

< Transfer-Encoding: chunked

< Server: Jetty(8.y.z-SNAPSHOT)

<

{"id":"/dataman-tomcat-test",

"cmd":null,

"args":null,

"user":null,

"env":{},"instances":3,

"cpus":0.1,"mem":128.0,"disk":0.0,"executor":""

,"constraints":[],"uris":[],"storeUrls":[],"ports":[0],"requirePorts":false,"backoffFactor":1.15," container":{"type":"DOCKER","volumes":[],"docker":

{"image":"tomcat7:latest",

"network":"BRIDGE","portMappings":[{"containerPort":8080,"hostPort":0,

"servicePort":10000,"protocol":"tcp"}],

"privileged":false,"parameters":[],"forcePullImage":false}},"healthChecks":[{"path":"/","protocol" :"HTTP","portIndex":0,"command":null,

"gracePeriodSeconds":5,"intervalSeconds":20,"timeoutSeconds":20,

"maxConsecutiveFailures":3,"ignoreHttp1xx":false}],"dependencies":[],"upgradeStrategy":

{"minimumHealthCapacity":1.0,"maximumOverCapacity":1.0},"labels":{},"acceptedResourceRole s":null,

"version":"2015-08-17T08:25:44.586Z",

"deployments":[{"id":"045f70ba-4114-4263-af41-73f23f2b2634"}],"tasks":[],"tasksStaged":0,"tas ksRunning":0,"tasksHealthy":0,"tasksUnhealthy":0,

"backoffSeconds":1,"maxLaunchDelaySeconds":36* Connection #0 to host 10.3.10.29 left intact

* Closing connection #0

00}

## 7.3查看marathon mesos状态##

**隧道建立**

******************************************************************************* 在查看状态之前我们需要做一些小的工作:建立隧道,此时要根据你所用系统决定!

**(一)Windows系统**

所需软件:secCRT、Xshell等,我使用的是xshell4,如下:

![](https://www.doczj.com/doc/009657793.html,/OCGDsHk.png)

![](https://www.doczj.com/doc/009657793.html,/YPoyO28.png)

打开谷歌浏览器---->扩展程序,推荐一款代理软件:switchysharp

![](https://www.doczj.com/doc/009657793.html,/w2ROKlW.png)

安装即可:

![](https://www.doczj.com/doc/009657793.html,/fw9nZyb.png)

然后,保存即可!

**(二)MAC系统也是同样的道理**

****************************************************************************

通过Mesos默认调度框架Marathon创建简单使用样例,创建Marathon任务有2种方法:通过web-ui和使用json脚本的方法,下面就通过简单实例进行说明。

### 7.3.1 用webui创建一个top任务(非docker) ###

#### 7.3.1.1 打开marathon-web-ui界?面####

http://你安装mesos系统的机器ip地址:8080

![](https://www.doczj.com/doc/009657793.html,/0FBreiX.png)

#### 7.3.1.2 创建新任务(点击+NewApp) ####

填写本次任务的数据信息

#任务名

ID dataman-top-test

#任务需要使用cpu最小大小

CPUs 0.1

#任务需要使用内存最小容量

Memory 16

#任务需要使用磁盘大小

Disk 0

#需要同时跑几个任务

Instances 1

#执行器执行命令

Command top -b

#执行器

Executor 空

#容器调度Slave端口方法

Ports

#通过wget模式将容器外部资源动态的获取到容器内部的work_dir中

URIs 空

#约束

Constraints 空

#### 7.3.1.3 执行创建任务(点击+Create) ####

#### 7.3.1.4 marathon创建过程####

可以看到marathon的任务表中显示的任务状态

![](https://www.doczj.com/doc/009657793.html,/YIypUxc.png)

任务id(/dataman-top-test)

内存信息(16)

cpu信息(0.1)

运行实例信息(0/1)

健康心跳状态(空)

状态(Deploying)

#### 7.3.1.5 创建结束查看结果####

和创建过程信息一样,但是已经可以看到运行实例信息(1/1),状态是(Running)

![](https://www.doczj.com/doc/009657793.html,/YIypUxc.png)

#### 7.3.1.6 进入单一任务详细状态####

![](https://www.doczj.com/doc/009657793.html,/evVzBfg.png)

点击任务名进入单一任务详细操作界面

Suspend 将任务设置为空

Scale 动态设置任务数量

Refresh 刷新

Restart App 重启任务

Destroy App 删除任务

version 任务已创建时间

Updated 最新任务操作时间

#### 7.3.1.7 查看任务数据信息####

点击Configuration任务创建的数据信息

![](https://www.doczj.com/doc/009657793.html,/Eb6ThfC.png)

#### 7.3.1.8 打开mesos-master ####

http://你安装mesos系统的机器ip地址:5050

#### 7.3.1.9 mesos-master总览####

![](https://www.doczj.com/doc/009657793.html,/IQpYhkX.png)

#### 7.3.1.10 mesos-master信息####

左上角可以看到mesos-master信息,包括集群名、masterip、创建时间、集群启动时间等![](https://www.doczj.com/doc/009657793.html,/F2f42AW.png)

#### 7.3.1.11 LOG ####

LOG可以查看mesos-master的实时运行日志

![](https://www.doczj.com/doc/009657793.html,/x5W8Sdj.png)

#### 7.3.1.12 Slaves ####

Activated #集群中存活的从机数量

Deactivated #集群中死亡的从机数量

![](https://www.doczj.com/doc/009657793.html,/p25FeGN.png)

#### 7.3.1.13 Task ####

这里说明这个统计是从Mesos启动后的累加值,并不是当前状态,仅供参考![](https://www.doczj.com/doc/009657793.html,/p9gqMXd.png)

Staged #创建过任务的数量

Started #正在开始任务的数量

Finished #任务正常完成的数量

Killed #任务手动取消的数量

Failed #任务执行失败的数量

Lost #任务丢失的数量

#### 7.3.1.14 Resources ####

统计集群cpu和内存资源情况

![](https://www.doczj.com/doc/009657793.html,/sKve5nf.png)

Total 总资源

Used 使用资源

Offered 申请资源

Idle 空闲资源

#### 7.3.1.15 Active Tasks ####

正在运行的任务统计

![](https://www.doczj.com/doc/009657793.html,/0I7Toyt.png)

这里可以看到刚才创建的任务

#### 7.3.1.16 Sandbox ####

这里可以查看任务运行内部的动态日志,包括正确和错误的

![](https://www.doczj.com/doc/009657793.html,/oxuHG8O.png)

stderr

#日志样例

I0701 14:35:19.243409 5881 exec.cpp:132] Version: 0.22.1

I0701 14:35:19.246486 5883 exec.cpp:206] Executor registered on slave

20150701-140046-33620746-5050-5032-S0

stdout

#日志样例

5508 root 20 0 4440 636 536 S 0.0 0.0 0:00.00 sh

5509 root 20 0 125208 9348 4932 S 0.0 0.2 0:00.06 docker

5564 root 20 0 141600 10904 4408 S 0.0 0.3 0:00.06 docker

5585 root 20 0 4440 652 548 S 0.0 0.0 0:00.01 sh

5591 root 20 0 85876 4056 2952 S 0.0 0.1 0:00.00 nginx

5592 www-data 20 0 86216 2016 604 S 0.0 0.0 0:00.09 nginx

5593 www-data 20 0 86216 1760 460 S 0.0 0.0 0:00.20 nginx

5594 www-data 20 0 86216 1760 460 S 0.0 0.0 0:00.17 nginx

5595 www-data 20 0 86216 1760 460 S 0.0 0.0 0:00.17 nginx

5596 root 20 0 4440 648 544 S 0.0 0.0 0:00.00 sh

5597 root 20 0 4440 644 544 S 0.0 0.0 0:00.00 sh

5598 root 20 0 736344 11648 10076 S 0.0 0.3 0:05.34 mesos-exec+

........

#### 7.3.1.17 Completed Tasks ####

集群启动后完成的任务(不一定是成功,也有失败等状态)

![](https://www.doczj.com/doc/009657793.html,/51KI9Nw.png)

### 7.3.2 用json脚本开放一个nginx网络服务###

#### 7.3.2.1 首先创建一个Nginx的dockerfile ####

vimDockerfile

FROM centos6-base

MAINTAINER Siffre

#install nginx

RUN yum install -y nginx

# forward request and error logs to docker log collector

RUN ln -sf /dev/stdout /var/log/nginx/access.log

RUN ln -sf /dev/stderr /var/log/nginx/error.log

#off nginx daemon

RUN echo "daemon off;" >> /etc/nginx/nginx.conf

#### 7.3.2.2 使用dockerfile生成docker镜像####

生成docker

docker build -t nginx-base .

查看镜像

docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

nginx-base latest c5dc79088bb8 41 hours ago 227.5 MB

#### 7.3.2.3 Json启动脚本####

vi dataman-nginx-test.sh

curl -v -X POST http://127.0.0.1:8080/v2/apps -H Content-Type:application/json -d \

'{

"id": "dataman-nginx-test",

"cmd": "nginx",

"cpus": 0.1,

"mem": 128.0,

"instances": 5,

"container": {

"type": "DOCKER",

"docker": {

"image": "nginx-base",

"network": "BRIDGE",

"portMappings": [

{ "containerPort": 80, "hostPort": 0, "servicePort": 10000, "protocol": "tcp" }

]

}

},

"healthChecks": [

{ "protocol": "HTTP",

"portIndex": 0,

"path": "/",

"gracePeriodSeconds": 5,

"intervalSeconds": 20,

"maxConsecutiveFailures": 3 }

]

}'

参数说明:

http://127.0.0.1:8080/v2/apps #Marathon地址

id #任务名

cmd #启动命令

cpus #划分cpu资源

mem #划分内存资源

instances #实际运行任务总数量

container #容器数据

type #容器类型

image #容器镜像名

network #容器网络模式

protMappings #容器端口设置

containerPort #容器内部服务端口

hostPort #容器映射到主机端口

servicePort #一个辅助端口,用来做服务发现

protocol #容器网络支持协议

healthChecks #心跳检查设置

protocol #检查协议

portIndex #检查公共端口对应的服务,比如haproxy转发服务端口为80和443,第?一

个80对应的索引

就是0,第二个443对应的索引就是1

path #检查地址

gracePeriodSeconds #一次健康检查以后,marathon认为服务健康不检查的时间段

intervalSeconds #检查间隔时间

maxConsecutiveFailures #失败检查重试次数,过次数后认为不可用

#### 7.3.2.4 运行脚本生成任务####

sh dataman-nginx-test.sh

执行结果

* Hostname was NOT found in DNS cache

* Trying 127.0.0.1...

* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)

> POST /v2/apps HTTP/1.1

> User-Agent: curl/7.35.0

> Host: 127.0.0.1:8080

> Accept: */*

>Content-Type:application/json

> Content-Length: 1041

> Expect: 100-continue

>

< HTTP/1.1 100 Continue

< HTTP/1.1 201 Created

< Cache-Control: no-cache, no-store, must-revalidate

< Pragma: no-cache

< Expires: 0

< Location: http://127.0.0.1:8080/v2/apps/dataman-nginx-test

< Content-Type: application/json

< Transfer-Encoding: chunked

* Server Jetty(8.y.z-SNAPSHOT) is not blacklisted

< Server: Jetty(8.y.z-SNAPSHOT)

<

* Connection #0 to host 127.0.0.1 left intact

{"id":"/dataman-nginx-test","cmd":"nginx","args":null,"user":null,"env":{},"instances":5,"cpu s":

0.1,"mem":128.0,"disk":0.0,"executor":"","constraints":[],"uris":[],"storeUrls":[],"ports":

[0],"requirePorts":false,"backoffFactor":1.15,"container":{"type":"DOCKER","volumes":[],"d ocker":

{"image":"ubuntu-nginx-base","network":"BRIDGE","portMappings":[{"containerPort":80,"h

ostPort":

0,"servicePort":10000,"protocol":"tcp"}],"privileged":false,"parameters":

[],"forcePullImage":false}},"healthChecks":[{"path":"/","protocol":"HTTP","portIndex":

0,"command":null,"gracePeriodSeconds":5,"intervalSeconds":20,"timeoutSeconds":

20,"maxConsecutiveFailures":3,"ignoreHttp1xx":false}],"dependencies":[],"upgradeStrategy" :

{"minimumHealthCapacity":1.0,"maximumOverCapacity":1.0},"labels":

{},"version":"2015-07-01T10:37:19.979Z","deployments":[{"id":"ec0ccd2e-c5d9-4b07-87c9- e61cd411cdcd"}],"tasks":[],"tasksStaged":0,"tasksRunning":0,"tasksHealthy":0,"tasksUnheal thy":

0,"backoffSeconds":1,"maxLaunchDelaySeconds":3600}

#### 7.3.2.5 检查####

**nginx-1**

这里需要注意的是因为配置了心跳监控,所以心跳监控的变成绿色了

#### 7.3.2.6 检查容器nginx网络服务####

**nginx-2**

点击这里会可以直接跳到nginx服务界面,说明服务正常

#### 7.3.2.7 bamboo设置####

**(1)bamboo主界面**

进入bambooweb界面

http://测试主机ip:8000/

bamboo1

**(2)添加bamboo规则转发nginx**

转发规则默认2种:目录转发和域名转发,本次测试使用目录格式,需要将nginx的web 服务端口转发到haproxy 80端口的根目录。

bamboo2

**(3)直接访问主机80端口**

浏览器访问http://测试主机ip

bamboo3

# 八、编译安装#

# 九、故障处理#

# 十、Docker化部署#

# 十一、自动化部署#

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu_CentOS

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置Hadoop 集群,默认读者已经掌握了Hadoop 的单机伪分布式配置,否则请先查看Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置。 本教程由厦门大学数据库实验室出品,转载请注明。本教程适合于原生Hadoop 2,包括Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,保证按照步骤来,都能顺利安装并运行Hadoop。另外有Hadoop安装配置简略版方便有基础的读者快速完成安装。 为了方便新手入门,我们准备了两篇不同系统的Hadoop 伪分布式配置教程。但其他Hadoop 教程我们将不再区分,可同时适用于Ubuntu 和CentOS/RedHat 系统。例如本教程以Ubuntu 系统为主要演示环境,但对Ubuntu/CentOS 的不同配置之处、CentOS 6.x 与CentOS 7 的操作区别等都会尽量给出注明。 环境 本教程使用Ubuntu 14.04 64位作为系统环境,基于原生Hadoop 2,在Hadoop 2.6.0 (stable)版本下验证通过,可适合任何Hadoop 2.x.y 版本,例如Hadoop 2.7.1,Hadoop 2.4.1 等。 本教程简单的使用两个节点作为集群环境: 一个作为Master 节点,局域网IP 为192.168.1.121;另一个作为Slave 节点,局域网IP 为192.168.1.122。 准备工作 Hadoop 集群的安装配置大致为如下流程: 1.选定一台机器作为Master 2.在Master 节点上配置hadoop 用户、安装SSH server、安装Java 环境 3.在Master 节点上安装Hadoop,并完成配置 4.在其他Slave 节点上配置hadoop 用户、安装SSH server、安装Java 环境 5.将Master 节点上的/usr/local/hadoop 目录复制到其他Slave 节点上 6.在Master 节点上开启Hadoop 配置hadoop 用户、安装SSH server、安装Java 环境、安装Hadoop 等过程已经在Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置中有详细介绍,请前往查看,不再重复叙述。 继续下一步配置前,请先完成上述流程的前 4 个步骤。 网络配置 假设集群所用的节点都位于同一个局域网。 如果使用的是虚拟机安装的系统,那么需要更改网络连接方式为桥接(Bridge)模式,才能实现多个节点互连,例如在VirturalBox 中的设置如下图。此外,如果节点的系统是在虚拟机中直接复制的,要确保各个节点的Mac 地址不同(可以点右边的按钮随机生成MAC 地址,否则IP 会冲突):

hadoop集群部署之双虚拟机版

1、采用一台机器开两个虚拟机的方式构成两台电脑的环境,用root登录。 分别查看其IP地址:输入# ifconfig,可得主机IP:192.168.1.99;分机为:192.168.1.100。 2、在两台机器上的/etc/hosts均添加相应的主机名和IP地址: 这里主机名命名为shenghao,分机名命名为slave: 保存后重启网络: 3、两台机器上均创立hadoop用户(注意是用root登陆) # useradd hadoop # passwd hadoop 输入111111做为密码 登录hadoop用户: 注意,登录用户名为hadoop,而不是自己命名的shenghao。 4、ssh的配置 进入centos的“系统→管理→服务器设置→服务,查看sshd服务是否运行。 在所有的机器上生成密码对: # ssh-keygen -t rsa 这时hadoop目录下生成一个.ssh的文件夹, 可以通过# ls .ssh/来查看里面产生的私钥和公钥:id_rsa和id_rsa.pub。 更改.ssh的读写权限: # chmod 755 .ssh 在namenode上(即主机上)

进入.ssh,将id_rsa.pub直接复制为authorized_keys(namenode的公钥): # cp id_rsa.pub authorized_keys 更改authorized_keys的读写权限: # chmod 644 authorized_keys 【这个不必须,但保险起见,推荐使用】 然后上传到datanode上(即分机上): # scp authorized_keys hadoop@slave:/home/hadoop/.ssh # cd .. 退出.ssh文件夹 这样shenghao就可以免密码登录slave了: 然后输入exit就可以退出去。 然后在datanode上(即分机上): 将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为slave.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥,这里就一个datanode,简单标记下就可。 # scp -r id_rsa.pub hadoop@shenghao:/home/hadoop/.ssh/slave.id_rsa.pub 复制完毕,此时,由于namenode中已经存在authorized_keys文件,所以这里是追加,不是复制。在namenode上执行以下命令,将每个datanode的公钥信息追加: # cat slave.id_rsa.pub >> authorized_keys 这样,namenode和datanode之间便可以相互ssh上并不需要密码: 然后输入exit就可以退出去。 5、hadoop的集群部署 配置hadoop前一定要配置JDK,请参考相关资料,这里就不赘述了。 将下载好的hadoop-0.19.0.tar.gz文件上传到namenode的/home/hadoop/hadoopinstall 解压文件: # tar zxvf hadoop-0.19.0.tar.gz 在/erc/profile的最后添加hadoop的路径: # set hadoop path export HADOOP_HOME=/home/hadoop/hadoopinstall/hadoop-0.20.2 export PATH=$HADOOP_HOME/bin:$PATH 之后配置hadoop/conf中的4个文件:

如何基于Docker快速搭建多节点Hadoop集群

如何基于Docker快速搭建多节点Hadoop集群 Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤。作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。 Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤。作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。 一. 项目简介 GitHub: kiwanlau/hadoop-cluster-docker 直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。 我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的Hadoop on Docker项目以及其存在的问题。 我的项目参考了alvinhenrick/hadoop-mutinode项目,不过我做了大量的优化和重构。alvinhenrick/hadoop-mutinode项目的GitHub主页以及作者所写的博客地址如下: GitHub:Hadoop (YARN) Multinode Cluster with Docker

Hadoop集群安装详细步骤

Hadoop集群安装详细步骤|Hadoop安装配置 文章分类:综合技术 Hadoop集群安装 首先我们统一一下定义,在这里所提到的Hadoop是指Hadoop Common,主要提供DFS(分布式文件存储)与Map/Reduce的核心功能。 Hadoop在windows下还未经过很好的测试,所以笔者推荐大家在linux(cent os 5.X)下安装使用。 准备安装Hadoop集群之前我们得先检验系统是否安装了如下的必备软件:ssh、rsync和Jdk1.6(因为Hadoop需要使用到Jdk中的编译工具,所以一般不直接使用Jre)。可以使用yum install rsync来安装rsync。一般来说ssh是默认安装到系统中的。Jdk1.6的安装方法这里就不多介绍了。 确保以上准备工作完了之后我们就开始安装Hadoop软件,假设我们用三台机器做Hadoop集群,分别是:192.168.1.111、192.168.1.112和192.168.1.113(下文简称111,112和113),且都使用root用户。 下面是在linux平台下安装Hadoop的过程: 在所有服务器的同一路径下都进行这几步,就完成了集群Hadoop软件的安装,是不是很简单?没错安装是很简单的,下面就是比较困难的工作了。 集群配置

根据Hadoop文档的描述“The Hadoop daemons are N ameNode/DataNode and JobTracker/TaskTracker.”可以看出Hadoop核心守护程序就是由 NameNode/DataNode 和JobTracker/TaskTracker这几个角色构成。 Hadoop的DFS需要确立NameNode与DataNode角色,一般NameNode会部署到一台单独的服务器上而不与DataNode共同同一机器。另外Map/Reduce服务也需要确立JobTracker和TaskTracker的角色,一般JobTracker与NameNode共用一台机器作为master,而TaskTracker与DataNode同属于slave。至于NameNode/DataNode和JobTracker/TaskTracker的概念这里就不多讲了,需要了解的可以参看相关文档。 在这里我们使用111作为NameNode与JobTracker,其它两台机器作为DataNode和TaskTracker,具体的配置如下: 环境的配置 在$HADOOP_HOME/conf/hadoop-env.sh中定义了Hadoop启动时需要的环境变量设置,其中我们至少需要配置JAVA_HOME(Jdk的路径)变量;另外我们一般还需要更改HADOOP_LOG_DIR(Hadoop的日志路径)这个变量,默认的设置是“export HADOOP_LOG_DIR=${HADOOP_HOME}/logs”,一般需要将其配置到一个磁盘空间比较大的目录下。 Hadoop核心程序配置 Hadoop 包括一组默认配置文件($HADOOP_HOME/src目录下的 core/core-default.xml, hdfs/hdfs-default.xml 和 mapred/mapred-default.xml),大家可以先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让Hadoop核心程序顺利启动,但对于开发人员来说一般需要自己的来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下。 $HADOOP_HOME/conf/core-site.xml是Hadoop的核心配置文件,对应并覆盖core-default.xml中的配置项。我们一般在这个文件中增加如下配置: Core-site.xml代码 1. 2. 3. 4. https://www.doczj.com/doc/009657793.html, 5. hdfs://192.168.1.111:9000 6. 7.

Hadoop集群搭建(二)HDFS_2017

Hadoop集群搭建(二)HDFS HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS 展开的。所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始。 安装Hadoop集群,首先需要有Zookeeper才可以完成安装。如果没有Zookeeper,请先部署一套Zookeeper。另外,JDK以及物理主机的一些设置等。都请参考下文: Hadoop集群搭建(一) Zookeeper 下面开始HDFS的安装 HDFS主机分配 1.19 2.168.67.101 c6701 --Namenode+datanode 2.192.168.67.102 c6702 --datanode 3.192.168.67.103 c6703 --datanode 1. 安装HDFS,解压hadoop- 2.6.0-EDH-0u2.tar.gz 我同时下载2.6和2.7版本的软件,先安装2.6,然后在执行2.6到2.7的升级步骤 https://www.doczj.com/doc/009657793.html,eradd hdfs 2.echo "hdfs:hdfs"| chpasswd 3.su - hdfs

4.cd /tmp/software 5.tar -zxvf hadoop-2. 6.0-EDH-0u2.tar.gz -C /home/hdfs/ 6.mkdir -p /data/hadoop/temp 7.mkdir -p /data/hadoop/journal 8.mkdir -p /data/hadoop/hdfs/name 9.mkdir -p /data/hadoop/hdfs/data 10.chown -R hdfs:hdfs /data/hadoop 11.chown -R hdfs:hdfs /data/hadoop/temp 12.chown -R hdfs:hdfs /data/hadoop/journal 13.chown -R hdfs:hdfs /data/hadoop/hdfs/name 14.chown -R hdfs:hdfs /data/hadoop/hdfs/data 15.$ pwd 16./home/hdfs/hadoop-2.6.0-EDH-0u2/etc/hadoop 2. 修改core-site.xml对应的参数 1.$ cat core-site.xml 2.<configuration> 3.<!--指定hdfs的nameservice为ns --> 4.<property> 5.<name>fs.defaultFS</name> 6.<value>hdfs://ns</value> 7.</property> 8.<!--指定hadoop数据临时存放目录-->

Hadoop集群部署方案

Hadoop集群部署方案

目录 1.网络拓扑 (1) 2.软件安装 (1) 2.1.修改主机名 (1) 2.2.修改host文件 (1) 2.3.创建Hadoop 用户 (2) 2.4.禁用防火墙 (2) 2.5.设置ssh登录免密码 (2) 2.6.安装hadoop (4) 3.集群配置 (5) 3.1.修改脚本 (5) 3.1.1................................................ hadoop-env.sh 5 3.1.2................................................... y arn-env.sh 5 3.2.配置文件 (5) 3.2.1................................................ core-site.xml 5 3.2.2................................................ hdfs-site.xml 7 3.2.3.............................................. mapred-site.xml 10 3.2. 4................................................ yarn-site.xml 11 3.2.5.配置datanode 14 3.3.创建目录 (14)

4.启动zk集群 (14) 5.启动hadoop (14) 5.1.启动所有节点journalnode (14) 5.2.格式化h1 namenode (15) 5.3.在h1上格式化ZK (15) 5.4.启动h1的namenode,zkfc (16) 5.5.启动h2上namenode (16) 5.6.同步h1上的格式化数据到h2 (16) 5.7.启动 HDFS (17) 5.8.启动 YARN (18) 5.9.启动h2 ResourceManager (18) 5.10........................................ h4上启动 JobHistoryServer 19 5.11.......................................... 查看ResourceManager状态19 6.浏览器访问 (19) https://www.doczj.com/doc/009657793.html,node管理界面 (19) 6.1.1............................... http://192.168.121.167:50070 19 6.1.2............................... http://192.168.121.168:50070 20 6.2.ResourceManager管理界面 (20) 6.2.1............................... http://192.168.121.167:8088/ 21 6.2.2............................... http://192.168.121.168:8088/ 21 6.3.JournalNode HTTP 服务 (21) 6.3.1............................... http://192.168.121.167:8480/ 21 6.4.Datanode HTTP服务 (22)

hadoopq集群搭建

疑难小结 1:HDFS进入安全模式: Name node is in safemode mode 退出安全模式, 执行命令: hadoop dfsadmin -safemode leave 2:INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable -- hadoop的本地库加载失败。 检查native库的版本信息,32bit的版本和64bit的版本在不匹配的机器上会加载失败,检查的命令是file native库依赖的glibc的版本问题。如果在高版本gcc(glibc)的机器上编译的native库,放到低版本的机器上使用,会由于glibc版本不一致导致该错误。 3: maps to localhost, but this does not map back 解决: 原因: 因为DNS服务器把 192.168.x.x 的地址都反向解析成 localhost ,而DNS服务器不是自己的,不能改。 办法: 编辑ssh 客户端的 /etc/hosts 文件,把出问题的IP 地址和主机名加进去,就不会报这样的错了。 4: jps命令正常,但是8088端口的WEB页面无法访问 解决方案: 检查一下防火墙和selinux状态, 将防火墙和selinux关闭 防火墙: service iptables status 永久修改: 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。 5: 8088端口访问正常,但是看不到datanode节点 解决方案: 可能出现的问题和解决方案: 1.8080端口没有打开, 手动启动yarn 2.8080端口被其他进程占用, kill掉占用该端口的进程, 然后重启yarn

Hadoop集群架构搭建分析

Hadoop集群架构搭建分析 一、概述 1、集群在6台机器上搭建完成,IP与hostname设置如下: 10.8.3.240 namenode 10.8.3.246 datanode1 10.8.3.239 datanode2 10.8.3.249 datanode3 10.8.3.238 datanode4 10.8.3.251 datanode5 2、软件安装描述: Hadoop Zookeeper HBase MongoDB namenode √√√datanode1 √√ datanode2 √√ datanode3 √√ datanode4 √√ datanode5 √ 3、进程运行描述 namenode datanode1datanode2datanode3datanode4datanode5 NameNode√ DataNode√√√√√JobTracker√ TaskTracker√√√√√HMaster√ HRegionServer√ √ Secondary NameNode HQuorumPeer √√√ 注: (1)NameNode、DataNode、SecondaryNameNode是hdfs进程 (2)JobTracker、TaskTracker是mapreducer进程 (3)HMaster、HRegionServer是HBase进程 (4)HQuorumPeer是Zookeeper进程

1、设置IP 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件:DEVICE=eth0 --网卡名称 BOOTPROTO=static --获取静态IP HW ADDR=00:E0:4C:F8:3B:CE --机器MAC地址 IPADDR=10.8.3.240 --IP NETMASK=255.255.255.0 --子网掩码 NETWORK=10.8.3.254 --默认网关 ONBOOT=yes 2、设置hostname 在所有机器的/etc/hosts 文件下添加: 10.8.3.240 namenode 10.8.3.246 datanode1 10.8.3.239 datanode2 10.8.3.249 datanode3 10.8.3.238 datanode4 10.8.3.251 datanode5 注:为了使机器辨别到hostname,必须重启机器。

hadoop.集群搭建详解

hadoop2.2.0集群搭建 PS:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装 hadoop-2.2.0就需要重新在64操作系统上重新编译 1.准备工作:(参考伪分布式搭建) 1.1修改Linux主机名 1.2修改IP 1.3修改主机名和IP的映射关系 1.4关闭防火墙 1.5ssh免登陆 1.6.安装JDK,配置环境变量等 2.集群规划:

PS: 在hadoop2.0中通常由两个NameNode组成,一个处于active 状态, 另一个处于standby状态。Active NameNode对外提供服务, 而Standby NameNode则不对外提供服务,仅同步active namenode 的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中, 主备NameNode之间通过一组JournalNode同步元数据信息, 一条数据只要成功写入多数JournalNode即认为写入成功。 通常配置奇数个JournalNode

这里还配置了一个zookeeper集群,用于ZKFC (DFSZKFailoverController)故障转移,当Active NameNode挂 掉了,会自动切换Standby NameNode为standby状态3.安装步骤: 3.1.安装配置zooekeeper集群 3.1.1解压 tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/ 3.1.2修改配置 cd /cloud/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/cloud/zookeeper-3.4.5/tmp 在最后添加: server.1=hadoop01:2888:3888 server.2=hadoop02:2888:3888 server.3=hadoop03:2888:3888 保存退出 然后创建一个tmp文件夹

大数据之hadoop分布式集群参数配置

hadoop分布式集群参数配置(一) ------master节点hadoop配置 上篇文章中我们已经将master节点的网络IP、hostname文件、hosts文件配置完成,接下来还有hadoop相关配置文件需要修改。 1、hdfs-site.xml 在hadoop的配置文件中与HDFS(hadoop分布式文件系统)相关的是hdfs-core.xml文件。在伪分布集群中只有一个节点,因此此节点即要有NameNode 功能也要有DataNode功能。在工作环境中这两个是不会在一个节点上的,在我们的多节点分布式集群中master只运行NameNode因此需在hdfs-site.xml文件中删除DataNode相关配置。 打开虚拟机在终端中输入cd hadoop/etc/hadoop 命令进入hadoop配置文件目录。 终端输入命令vim hdfs-site.xml进入vim编辑界面,按下图步骤删除原来伪分布集群配置的DataNode相关配置,并将数据冗余数量设置为2。 输入i进入编辑模式,编辑后的文件内容如下所示。

最后退出编辑模式,保存并退出。 2、core-site.xml 在core-site.xml中指定一个节点运行hdfs服务。在之前伪分布集群中只有一个节点,因此我们使用的是localhost,如今在集群中有三个节点,我们约定使用master。 在终端中输入vim core-site.xml按下图操作修改配置文件。

修改后内容如下所示 记得退出并保存。 3、yarn-site.xml 在yarn-site.xml 里可以修改与资源管理模块YARN相关的一些配置。 终端中输入vim yarn-site.xml进行以下更改,将资源调度管理任务放置于master节点上 最终修改后的文件内容如下图所示。

第2课-Hadoop3.1分布式集群安装

Hadoop3.1.0伪分布式集群环境安装 【实验名称】 Hadoop3.1.0伪分布式集群环境安装 【实验目的】 (1)熟悉掌握Hadoop项目体系结构及其组成原理,通过对各个组件的学习掌握各个组件的运行机制和原理。 (2)能够搭建大数据hadoop底层平台,熟练掌握Hadoop平台的安装和hadoop常用命令使用方法; 【实验要求】 要求实验结束时,已构建出以下HDFS集群: 1.hadoop1上部署主服务NameNode; 2.hadoop2、hadoop3上部署从服务DataNode; 【实验环境】 实验设备包括3台Linux虚拟机、实验所需安装包

【实验步骤】 1.基础环境准备 1.1 集群规划 本节实验搭建hadoop分布式集群环境,通过三台hadoop主机建立整个hadoop3.1.0集群,其中hadoop1作为主节点(NameNode),hadoop2和hadoop3作为数据节点(DataNode)。平台提供已安装好系统的Linux虚拟机,底层系统为centos6.8 X64。

1.2 系统准备 本实验中,Linux系统已经准备好,包括安装Linux系统以及安装vmware Tools等操作。 软件安装包存放于/opt/hadoop-package目录下 1.3 网络配置 为每个Hadoop主机配置相应的IP地址,每台的操作方法相同。IP地址根据实验环境进行配置,如果实验环境使用的是动态IP地址则可以跳过网络配置部分,进入下一步操作。如果有疑问请联系授课老师 1.3.1修改网络配置文件 1、首先,确保在root用户下进行操作。通过vi命令修改网络配置文件[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 2、然后按i键进入编辑模式,我们需要将其中的BOOTPROTO=dhcp改为BOOTPROTO=static意思是设置为静态IP,将ONBOOT=no改为ONBOOT=yes意思是将网卡设置为开机启用,同时在文字下方添加如下命令:IPADDR=172.16.16.108 #静态IP GATEWAY=172.16.16.254 #默认网关 NETMASK=255.255.255.0 #子网掩码 DNS1=114.114.114.114 #DNS 配置

Hadoop3.0.0完全分布式集群搭建过程

Hadoop3.0.0完全分布式集群搭建过程1.选取两台服务器(CentOS系统64位) 192.168.33.181 主节点 192.168.33.182 从节点 之后的操作如果是用普通用户操作的话也必须知道root用户的密码,因为有些操作是得用root用户操作。如果是用root用户操作的话就不存在以上问题。 我是用root用户操作的。 2.修改hosts文件 修改两台服务器的hosts文件。 vi /etc/hosts 在原文件的基础最后面加上: 192.168.33.181 Master 192.168.33.182 Slave1 修改完成后保存执行如下命令。 source /etc/hosts 3.ssh无密码验证配置 3.1修改ssh配置文件"/etc/ssh/sshd_config"的下列内容,将以下内容的注释去掉: RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同) 重启ssh服务,才能使刚才设置有效。

service sshd restart 验证无密码登录本机是否成功。 ssh localhost 3.1在Master上生成密钥: ssh-keygen -t rsa -P '' 将Master上密钥拷贝至Slave1 ssh-copy-id Slave1 ssh命令测试是否连接成功 ssh Slave1 exit #退出 重复上述操作,在Slave1上生成密钥: ssh-keygen -t rsa -P '' 将Slave1上密钥拷贝至Master ssh-copy-id Slave1 3.6ssh命令测试是否连接成功 ssh Master exit #退出 4.安装基础环境(JAVA和SCALA环境) 4.1 Java1.8环境搭建 1)下载jdk-8u144-linux-x64.tar.gz解压 tar -zxvf jdk-8u144-linux-x64.tar.gz 2)添加Java环境变量,在/etc/profile中添加:export JAVA_HOME=/usr/local/jdk1.8.0_144

hadoop学习笔记(一、hadoop集群环境搭建)

Hadoop集群环境搭建1、准备资料 虚拟机、Redhat6.5、hadoop-1.0.3、jdk1.6 2、基础环境设置 2.1配置机器时间同步 #配置时间自动同步 crontab -e #手动同步时间 /usr/sbin/ntpdate https://www.doczj.com/doc/009657793.html, 1、安装JDK 安装 cd /home/wzq/dev ./jdk-*****.bin 设置环境变量 Vi /etc/profile/java.sh 2.2配置机器网络环境 #配置主机名(hostname) vi /etc/sysconfig/network #修第一台hostname 为master hostname master

#检测 hostname #使用setup 命令配置系统环境setup

#检查ip配置 cat /etc/sysconfig/network-scripts/ifcfg-eth0 #重新启动网络服务 /sbin/service network restart #检查网络ip配置 /sbin/ifconfig 2.3关闭防火墙

2.4配置集群hosts列表 vi /etc/hosts #添加一下内容到vi 中 2.5创建用户账号和Hadoop部署目录和数据目录 #创建hadoop 用户 /usr/sbin/groupadd hadoop

#分配hadoop 到hadoop 组中 /usr/sbin/useradd hadoop -g hadoop #修改hadoop用户密码 Passwd hadoop #创建hadoop 代码目录结构 mkdir -p /opt/modules/hadoop/ #修改目录结构权限拥有者为为hadoop chown -R hadoop:hadoop /opt/modules/hadoop/ 2.6生成登陆密钥 #切换到Hadoop 用户下 su hadoop cd /home/hadoop/ #在master、node1、node2三台机器上都执行下面命令,生成公钥和私钥 ssh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa cd /home/hadoop/.ssh #把node1、node2上的公钥拷贝到master上 scp /home/hadoop/.ssh/ id_rsa.pub hadoop@master:/home/hadoop/.ssh/node1_pubkey scp /home/hadoop/.ssh/ id_rsa.pub hadoop@master:/home/hadoop/.ssh/node2_pubkey #在master上生成三台机器的共钥 cp id_rsa.pub authorized_keys cat node1_pubkey >> authorized_keys cat node2_pubkey >> authorized_keys rm node1_pubkey node2_pubkey #吧master上的共钥拷贝到其他两个节点上 scp authorized_keys node1: /home/hadoop/.ssh/ scp authorized_keys node1: /home/hadoop/.ssh/ #验证 ssh master ssh node1 ssh node2 没有要求输入密码登陆,表示免密码登陆成功

Windows环境下Hadoop开发环境配置

Windows环境下Hadoop开发环境配置 一、事先准备 1)Hadoop集群环境搭建 已经用三台虚拟机(操作系统为ubuntu 10.0.4)搭建完成一个hadoop分布式集群,分别是hadoop1: 192.168.201.104,hadoop2: 192.168.201.54和hadoop3: 192.168.201.100 ,其中hadoop1为namenode,其余为datanode。 2)windows安装JDK和eclipse 过程从略,需要注意应安装与hadoop集群所用JDK兼容的版本。本例中,hadoop集群安装的是64位的JDK-8.0.20,因此Windows下选择64位的JDK-8.0.65,eclipse版本为支持64位的Kepler Service Release 2。 3)hadoop安装包解压 将搭建hadoop集群的安装包拷贝并解压到windows开发机器的某个目录下,本例中的安装包为hadoop-2.6.1.tar.gz,解压到D:\hadoop-2.6.1目录。 4)hadoop for eclipse插件包下载 下载hadoop for eclipse插件。由于本例中hadoop集群为hadoop2,插件也必须是2.x 版本。本例中插件包为:hadoop-eclipse-plugin-2.2.0。 二、配置eclipse 1)拷贝插件包 将插件包拷贝至eclipse安装目录的plugin目录下,然后重启eclipse。 2)配置hadoop安装路径 打开"Window"--"Prefrences",此时左侧会出现"Hadoop Map/Reduce"选项,将其配置为hadoop安装包解压后的目录。 3)配置Map/Reduce Locations 打开"Window"--"Perspectives"--"Open Perspective"--"Other ...",在弹出窗口中选择"Map/Reduce",点击"OK"。

Hadoop集群搭建

Hadoop集群搭建 Master机的ip地址假定为192.168.1.1 slaves1的假定为192.168.1.2 slaves2的假定 为192.168.1.3 各台机器的用户同为redmap,hadoop 根目录为:/hadoop(即直接在filesystem里装得hadoop) (1) 192.168.1.1 redmap-master 作为Namenode, JobTracker, SecondaryNameNode (2) 192.168.1.2 redmap-slaves1 作为Datanode, TaskTracker (3) 192.168.1.3 redmap-slaves2 作为Datanode, TaskTracker 配置 首先,需要配置各个机器间的相互访问: 1、按照上面的设置修改各台机器的host文件和hostname文件,保证机器可正常通信。在master 机上的hosts文件(相关部分)为: 127.0.0.1 localhost 192.168.1.1 redmap-master 192.168.1.2 redmap-slaves1 192.168.1.3 redmap-slaves2 2、配置ssh的自动登陆(在master机上): $ ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa 完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。 再把id_dsa.pub 追加到授权key 里面(当前并没有authorized_keys文件): $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 完成后可以实现无密码登录本机: $ ssh localhost 3、把master上的id_dsa.pub 文件追加到2和3的authorized_keys 内( 以slaves1节点为例): #拷贝master的id_dsa.pub文件(在master号机器上执行) $ scp id_dsa.pub redmap@192.168.1.2:/home/maple/ 注:(只需在主节点上运行ssh-kegen程序。其他节点的目录结构创建后,将刚才在主节点创建的keys通过scp拷贝到从节点的同样的目录上。)

hadoop大数据平台分布式集群环境搭建安装规划

hadoop大数据平台分布式集群环境搭建安装规划Hadoop分布式集群环境搭建是每个入门级新手都非常头疼的事情,因为你可能花费了很久的时间在搭建运行环境,最终却不知道什么原因无法创建成功。但对新手来说,运行环境搭建不成功的概率还蛮高的。 在之前的分享文章中给hadoop新手入门推荐的大快搜索DKHadoop发行版,在运行环境安装方面的确要比其他的发行版hadoop要简单的多,毕竟DKHadoop是对底层重新集成封装的,对与研究hadoop尤其是入门级新手来说是非常友好的一个发行版!关于DKHadoop的安装留在后面再给大家分享,本篇就跟大家聊一聊关于【hadoop分布式集群环境搭建规划】。 1、分布式机器架构图:

其中机器1主节点,机器2从节点,机器3、机器4等都是计算节点。当主节点宕机后从节点代替主节点工作,正常状态是从节点和计算节点一样工作。这种架构设计保证数据完整性。 首先我们保证每台计算节点上分别有一个DataNode节点和NodeManager节点。因为都是计算节点,真正干活的。在数量上我们要保证。那么NameNode和ResourceManager是两个非常重要的管理者,我们客户端的请求,第一时间与NameNode 和ResourceManager打交道。NameNode负责管理HDFS文件系统的元数据,客户端不管是读文件还是写文件,都要首先找到NameNode获取文件的元数据,再进行文件的操作。ResourceManager也是如此,它负责管理集群中的资源和任务调度,你也可以把它视为“大数据操作系统”。客户端能否提交应用并运行,就看你的ResourceManager是否正常。2、达到多大规模的数据,才值得用大数据的方式来处理? 第一,从数据量角度,但是并无确定的答案,一般定性角度来说,你觉得这个数据量单机处理不了,比如内存限制,时间过久等,就用集群,但是要降低时间,你的处理逻辑必须能分布式处理,定量就是一般数据或者未来的数据量会达到PB级别(可能GB)或以上就要用分布式,当然前提也是你的处理逻辑可以进行分布式。 第二,从算法角度,或者处理逻辑的时间复杂度来说,比如虽然你的数据记录不是很多,但是你的算法或者处理逻辑的时间复杂度是n的平方,甚至更高,同时你的算法可以进行分布式设计,那么就考虑用分布式,比如你的记录虽然只有1w, 但是时间复杂度确是n的平方,那么你想想单机要多久,要是你的算法可以进行分布式处理,那么就考虑用分布式。 3、制约大数据处理能力的几个问题 a、网络带宽 网络是联接计算机的纽带,这个纽带当然越宽越好,这样可以在计算机资源许可的情况

相关主题
文本预览
相关文档 最新文档