如何在Centos上使用PageSpeed给Apache加速

前言

这个PageSpeed是Google官方给的一款适用于Web服务器的加速模块,

具体有没有效果,我不敢保证,反正我自己测试的时候,是看不出来的(逃

本文测试环境:Centos 7 , Oneinstack Apache+Tengine

安装过程

1、安装Google PageSpeed

安装之前:

Google PageSpeed会自动更新的,如果不想要自动更新,请先执行以下这句命令(不推荐自动更新):

touch /etc/default/mod-pagespeed

开始安装:

64位Centos/Fedora:

rpm -ivh https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm --force --nodeps

32位Centos/Fedora:

rpm -ivh https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.rpm --force --nodeps

据测试,国内服务器也能直接下载(这个域名和服务器并没有被蔷)

2、复制安装的配置文件

由于Oneinstack安装的apache并不在默认目录,所以按照官方的操作是要没用的

首先得将默认的配置文件复制到apache配置文件目录下(以下为Oneinstack的示范):

cp /etc/httpd/conf.d/page* /usr/local/apache/conf/extra/

3、添加PageSpeed配置文件到Apache主配置文件中

编辑httpd.conf文件,并在最后添加:

Include conf/extra/pagespeed.conf
Include conf/extra/pagespeed_libraries.conf

或直接运行下面两行命令:

echo "Include conf/extra/pagespeed.conf" >> /usr/local/apache/conf/httpd.conf
echo "Include conf/extra/pagespeed_libraries.conf" >> /usr/local/apache/conf/httpd.conf

4、重启Apache服务器查看效果

service httpd restart
No related posts.

老薛教你如何隐藏Apache的版本号

为什么要隐藏Apache的版本号?

未分类

因为网络上的一些黑客会通过apache暴露出来的版本信息有针对性的入侵,为了服务器的安全,所以我们在部署完apache软件之后,首要做的就是关闭apache的版本等信息的显示功能。具体操作配置如下:

一、隐藏Apache信息

1.1 主配置中启用httpd-default.conf

vim  /application/apache/conf/httpd.conf
#找到httpd-default.conf,删除includes前面的“#”,改成如下
Include conf/extra/httpd-default.conf

1.2 修改httpd-default.conf

vim /application/apache/conf/extra/httpd-default.conf
#找到
ServerTokens Full
ServerSignature On
#改成
ServerTokens Prod
ServerSignature off

说明:

yum方式安装apache,默认的配置文件是在/etc/http/conf目录,只要在httpd.conf文件里去找1.2所说的配置,并按找修改完毕就可以。

1.3 测试

打开浏览器,输入apache默认目录里不存在的一个文件,然后敲回车,看浏览器会有什么提示?

apache ab压力测试学习

1. 介绍

网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。

性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍ab。

ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

2. ab的原理

ab是apachebench命令的缩写。

ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

3. ab的安装

ab的安装非常简单,如果是源码安装apache的话,那就更简单了。apache安装完毕后ab命令存放在apache安装目录的bin目录下。如下:

/usr/local/apache2/bin
可在apache官网下载安装包,也可以访问我提取好的链接下载http://pan.baidu.com/s/1eRVqgBC

4. 使用

将ab.exe 放入c盘根目录,菜单输入cmd进入doc窗口,执行

ab.exe -c 100 -n 1000 http://127.0.0.1/app/login

未分类

下面我们对这些参数,进行相关说明。如下:

  • -n 在测试会话中所执行的请求个数。默认时,仅执行一个请求。
  • -c 一次产生的请求个数。默认是一次一个。
C:>ab.exe -c 100 -n 1000 http://127.0.0.1/app/login
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache-Coyote/1.1   #apache版本
Server Hostname:        127.0.0.1           #请求访问的IP
Server Port:            80                  #请求访问的端口

Document Path:          /app/login          #页面地址
Document Length:        65 bytes            #页面长度

Concurrency Level:      100                 #并发数
Time taken for tests:   0.899 seconds       #共使用时间
Complete requests:      1000                #总的请求数
Failed requests:        0                   #请求失败数
Write errors:           0
Total transferred:      206000 bytes        #总共传输字节数,包含http的头信息等  
HTML transferred:       65000 bytes         #html字节数,实际的页面传递字节数
Requests per second:    1112.28 [#/sec] (mean)  #每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量  
Time per request:       89.905 [ms] (mean)  #用户平均请求等待时间  
Time per request:       0.899 [ms] (mean, across all concurrent requests)#服务器平均处理时间,也就是服务器吞吐量的倒数  
Transfer rate:          223.76 [Kbytes/sec] received #每秒获取的数据长度 

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       5
Processing:     1   88 210.6      4     894
Waiting:        1   53 146.4      4     654
Total:          1   88 210.7      4     896

Percentage of the requests served within a certain time (ms)
  50%      4 # 50%的请求在4ms内返回  
  66%      6
  75%     11
  80%     27 # 80%的请求在27ms内返回  
  90%    459
  95%    614
  98%    879
  99%    887
 100%    896 (longest request)

5. Linux安装

yum install httpd-tools
ab -v

Apache 强制 HTTP 全部跳转到 HTTPS

.htaccess 在每一层独立服务根目录下都存在,例如:

全部网站根目录为 /var/www/html/.htaccess

米扑博客根目录位 /var/www/html/mimvp-wordpress/.htaccess

米扑论坛根目录位 /var/www/html/mimvp-discuz/.htaccess

米扑学习根目录位 /var/www/html/mimvp-study/.htaccess

HTTP 80 强制转 HTTPS

全站采用https协议访问,所以需要http重定向到https,只需要在.htaccess加入下面规则

在相应的网站根目录新建 .htaccess

例如,在米扑博客的网站根目录下,新建

vim   /var/www/html/mimvp-wordpress/.htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

或者

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

强制301重定向 HTTPS

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

站点绑定多个域名

只允许www.gworg.com 跳转

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
###把网址更改为自己的###

高级用法 (可选)

RewriteEngine on
# 强制HTTPS
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制HTTP
RewriteCond %{HTTPS} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Apache mod_rewrite实现HTTP和HTTPS重定向跳转

当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS(即端口443)。这时候你可以用以下的方式来做到:(Apache mod_rewrite)

把这段代码放在.htaccess文件,即可实现HTTP到HTTPS的重定向。

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{SERVER_PORT} 80
 RewriteRule ^(.*)$ https://blog.mimvp.com/$1 [R=301,L]
</IfModule>

而当你又想用回HTTP的时候,反过来就可以了:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{SERVER_PORT} 443
 RewriteRule ^(.*)$ https://blog.mimvp.com/$1 [R=301,L]
</IfModule>

其中R=301表示Moved Permanently,即告诉搜索引擎或者浏览器下去直接访问后者的地址,

如果只是试验性地重定向,可以使用R=302(Found),临时跳转

更多30x状态,请见米扑博客:HTTP协议中POST、GET、HEAD、PUT等请求方法总结

VirtualHost 添加重定向

实测以上方法,对于我的需求场景,都无效

我的项目场景:

1、在我的根目录下 /var/www/htmp/

2、配置有多个网站,如米扑博客(/var/www/htmp/mimvp-blog/)、米扑论坛(/var/www/htmp/mimvp-forum/)、米扑学习(/var/www/htmp/mimvp-study/)等

3、对于米扑博客的http请求,全部定向到https博客;对于米扑论坛的http请求,全部定向到https论坛;

最后,解决方案是在 VirtualHost 节点里,添加如下配置:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

完整配置参数如下:

# blog
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/wordpress
    ServerName blog.mimvp.com

    RewriteEngine on
    RewriteCond   %{HTTPS} !=on
    RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

    DirectoryIndex index.php
    ErrorLog /var/log/blog.mimvp.com-error_log
    CustomLog /var/log/blog.mimvp.com-access_log common
</VirtualHost>

在米扑论坛、米扑学习等 VirtualHost 节点里,都添加如上配置,问题解决。

米扑博客效果,全部自动跳转到 https :

https://blog.mimvp.com

关于

修改Nginx与Apache上传文件大小限制

修改 Nginx 上传文件最大值限制

我们使用 ngnix 做 web server 的时候,nginx 对上传文件的大小有限制。

这个时候我们要修改 nginx 参数。

sudo vim /etc/nginx/nginx.conf 
#在http段里面添加:
client_max_body_size 100m;  //举例设置上传最大值为100m

然后重启nginx

systemctl restart nginx

修改 Apache 上传文件最大值限制

打开 php.ini, 找到下面的项并修改之。下面以上传100M为例。

sudo vim /etc/php.ini
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开 
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 
upload_max_filesize = 100m ;望文生意,即允许上传文件大小的最大值。默认为2M 
post_max_size = 100M ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M

一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。

但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:

max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒 
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 
memory_limit = 128M ;每个PHP页面所吃掉的最大内存,默认8M

全部设置好之后,重启

systemctl restart httpd

CentOS下apache绑定域名

本文主要介绍在CentOS下apache绑定域名以及apache绑定多个域名,首先要找到apache的配置文件httpd.conf的位置。CentOS操作系统一般在 /etc/httpd/conf 下,有的Linux操作系统版本是在 /etc/Apache2/conf 或 /usr/local/etc/apache 文件夹里面,剩下需要做的是修改配置文件httpd.conf,一般配置文件最下面有如下绑定域名说明:

# VirtualHost example:  
# Almost any Apache directive may go into a VirtualHost container.  
# The first VirtualHost section is used for requests without a known  
# server name.  
#  
#<VirtualHost *:80> 
#    ServerAdmin [email protected]  
#    DocumentRoot /www/docs/dummy-host.example.com  
#    ServerName dummy-host.example.com  
#    ErrorLog logs/dummy-host.example.com-error_log  
#    CustomLog logs/dummy-host.example.com-access_log common  
#</VirtualHost> 

大家可以依葫芦画瓢,也可以结合相关语法加入自己的配置说明,下面是我无忧程序的配置文件:1、* 星号修改成自己网站的IP地址 2、ServerAdmin管理员邮箱(可有可无) 3、DocumentRoot网站文件在服务器的目录路径 4、ServerName绑定相应域名 5、ServerAlias泛解析绑定子域名 6、ErrorLog和CustomLog指定日志文件存放路径。

<VirtualHost 175.102.8.117:80> 
    addDefaultCharset gbk  
    DocumentRoot /chengxu 
    ServerName 66php.com  
    ServerAlias *.66php.com  
    ErrorLog /sym/logs/66php.com-error_log  
    CustomLog /sym/logs/66php.com-access_log common  
</VirtualHost> 

如果一个服务器绑定多个域名不是在ServerName添加多个域名,ServerName 后面只能加一个域名,要重复绑定则需要添加多加多个VirtualHost模块。

Apache/Httpd安装mod_pagespeed加速模块

mod_pagespeed是谷歌发布的加速httpd的优化模块,通过自动优化代码、压缩传输内容、自动缓存加速http,支持Centos/Debian系统

Centos/Fedora下安装:

    #http://www.haiyun.me  
    #32位  
    wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.rpm  
    #64位  
    wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm  
    yum install at  rpm -U mod-pagespeed-*.rpm

Debina/Ubuntu下安装:

    #32位  
    wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.deb  
    #64位  
    wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.deb  
    dpkg -i mod-pagespeed-*.deb

重启httpd:

service httpd restart

查看pagespeed是否加载:

httpd -M|grep pagespeed

APACHE显示目录列表的配置方法

我们可以通过修改Apache配置文件httpd.conf来实现显示文件目录列表,代码如下:

    DocumentRoot  "c:www"

    Options Indexes
    AllowOverride All
    Order allow,deny
    IndexOptions Charset=UTF-8
    Allow from all

注意:”D:WWW”是网站的根目录,参数”Options Indexes”表示启用目录浏览,”IndexOptions Charset=UTF-8″设置字符集,以消除中文乱码。

如果是添加的虚拟主机站点,加在虚拟主机配置文件vhosts.conf内修改以下代码:

    Options Indexes
    AllowOverride All
    Order allow,deny
    IndexOptions Charset=UTF-8
    Allow from all

其中”D:www.test.com”为所添加虚拟主机站点的根目录,”Options Indexes”表示启用目录浏览。

修改好,保存,重启Apache服务,就可以了,如下图:

未分类

Ubuntu 14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

1、CDH介绍

1.1、什么是CDH和CM?

  CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装。
  Cloudera-Managerceql(本文中简称CM)是一个工具,CM能够管理一个大的Hadoop cluster并不是一只要下载tar files什么压缩并启动services这么简单。后续有非常多设定、监控等麻烦的事要处理,CM都能够做到,有些类似Casti。Cloudera Manager整合了一列的功能让系统管理者能更方便的维护Hadoop。
  

1.2、CDH的主要功能?

  • 管理
  • 监控
  • 诊断
  • 集成

1.3、CDH版本衍化

  Hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变。
  Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop)。截至目前为止,CDH共有5个版本,其中,前两个已经不再更新,最近的两个,分别是CDH4在Apache Hadoop 2.0.0版本基础上演化而来的),CDH5,它们每隔一段时间便会更新一次。
  Cloudera以Patch Level划分小版本,比如Patch Level为923.142表示在原生态Apache Hadoop 0.20.2基础上添加了1065个Patch(这些Patch是各个公司或者个人贡献的,在Hadoop jira上均有记录),其中923个是最后一个Beta版本添加的Patch,而142个是稳定版发行后新添加的Patch。由此可见,Patch Level越高,功能越完备且解决的Bug越多。
  Cloudera版本层次更加清晰,且它提供了适用于各种操作系统的Hadoop安装包,可直接使用apt-get或者yum命令进行安装,更加省事。

1.4、CDH5.1.2支持的主要组件简要介绍

  • HTTPFS
      1:Httpfs是Cloudera公司提供的一个Hadoop Hdfs的一个Http接口,通过WebHDFS REST API 可以对hdfs进行读写等访问
      2:与WebHDFS的区别是不需要客户端可以访问Hadoop集群的每一个节点,通过Httpfs可以访问放置在防火墙后面的Hadoop集群
      3:Httpfs是一个Web应用,部署在内嵌的Tomcat中

  • HBASE
      Hbase是Bigtable的开源山寨版本。是建立的Hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。
      它介于Bosql和RDBMS之间,仅能通过主键(row key)和主键的Range来检索数据,仅支持单行事务(可通过Hive支持来实现多表Join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。
      与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

  • HDFS
      Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

  • HIVE
      Hive 是一个基于 Hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。它把海量数据存储于 Hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 Map/Reduce 任务,通过执行这些任务完成数据处理。

  • HUE
      Hue是CDH专门的一套WEB管理器,它包括3个部分Hue Ui,Hue Server,Hue db。Hue提供所有的CDH组件的Shell界面的接口。你可以在Hue编写MR,查看修改HDFS的文件,管理Hive的元数据,运行Sqoop,编写Oozie工作流等大量工作。

  • Impala
      Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL。除了像Hive使用相同的统一存储平台,Impala也使用相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)。Impala还提供了一个熟悉的面向批量或实时查询和统一平台。

  • MapReduce
      MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念”Map(映射)”和”Reduce(归约)”,和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。MapReduce更多运行于离线系统,而实时计算,可以使用Storm。关于Sotrm的使用和介绍,可以参考这篇文章《ubuntu12.04+storm0.9.2分布式集群的搭建》。

  • Oozie
      Oozie是Yahoo针对Apache Hadoop开发的一个开源工作流引擎。用于管理和协调运行在Hadoop平台上(包括:HDFS、Pig和MapReduce)的Jobs。Oozie是专为雅虎的全球大规模复杂工作流程和数据管道而设计。

  • Solr
      Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。

  • Spark
      Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
      Spark和Storm类似,都是基于内存的运行,不确定哪种方式在数据吞吐量上要具优势,不过Storm计算时间延迟要小。关于Sotrm的使用和介绍,可以参考这篇文章《ubuntu12.04+storm0.9.2分布式集群的搭建》。

  • Sqoop
      Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过map-reduce任务来传输数据,从而提供并发特性和容错。sqoop主要通过JDBC和关系数据库进行交互。理论上支持JDBC的database都可以使用sqoop和hdfs进行数据交互。
      

  • YARN
      YARN可以理解为是Hadoop MapReduceV2版本,YARN重构根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。一个应用程序无非是一个单独的传统的 MapReduce 任务或者是一个 DAG( 有向无环图 ) 任务。ResourceManager 和每一台机器的节点管理服务器能够管理用户在那台机器上的进程并能对计算进行组织。
      事实上,每一个应用的 ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。

  • Zookeeper
     Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
      Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

2、CDH的官网在哪里?

  http://www.cloudera.com/

3、CDH在哪里下载?

  由于CDH有多个版本,作者不建议单独下载安装,可以通过cloudera-manager-daemons、cloudera-manager-server、cloudera-manager-agent来安装,本文后面会有介绍。

4、如何安装

4.1、设置Host

  修改Host

root@m1:~# cat /etc/hosts 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10    m1.linuxidc.com   m1
192.168.1.11    m2.linuxidc.com   m2
192.168.1.12    s1.linuxidc.com   s1
192.168.1.13    s2.linuxidc.com   s2


# The following lines are desirable for IPv6 capable hosts
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

4.2、设置静态IP

  修改成静态IP地址

root@m1:~# vi /etc/network/interfaces
iface wlan0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-nameservers 8.8.8.8

4.3、设置Host

  修改主机名称

root@m1:~# cat /etc/hostname 
m1.linuxidc.com

4.4、关闭防火墙

root@m1:~# ufw disable

4.5、安装JDK7,CDH5要求至少是Oracle JDK7

  添加 PPA repository 到系统

root@m1:~# add-apt-repository ppa:webupd8team/java
root@m1:~# apt-get update
root@m1:~# sudo apt-get upgrade
  • 1
  • 2
  • 3

  过程中会弹出个框,选择YES,因为要下载二进制包,所以可能会慢一些

root@m1:~# apt-get install oracle-java7-installer

  
  将Oracle 7 设置成默认版本

root@m1:~# apt-get install oracle-java7-set-default

   查看当前Java版本

root@m1:~# java -version 
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01) 
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

4.6、安装MySql最新版,CM的数据库我们用My Sql管理

  安装Mysql Server,后面在安装Cloudera Manager的时候会用到,如果你要使用PostGreSQL ,可以跳过这一步 (4.6-4.8)。
  

4.6.1、在主机上使用apt-get安装My Sql

  在主机上使用apt-get安装My Sql,安装过程中会有提示,一直接回车就可以 (4台机器都要执行)

root@m1:~# apt-get install mysql-server

4.6.2、修改MySql配置,方便CM使用

4.6.2.1、配置MySql的监听地址

  对MySQL的配置项进行修改,先备份,找到“bind-address = 127.0.0.1”这一行,然后注释掉,改成“bind-address = 0.0.0.0”

root@m1:~# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak 
root@m1:~# vi /etc/mysql/my.cnf 
#bind-address = 127.0.0.1 
bind-address = 0.0.0.0

4.6.2.2、配置MySql的其他配置,为了CM使用

  MySql配置中,其中对于Cloudera的支持,可以参考官方描述

[client]
default-character-set=utf8
[mysqld]
transaction-isolation=READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
character-set-server=utf8
key_buffer              = 16M
key_buffer_size         = 32M
max_allowed_packet      = 32M
thread_stack            = 256K
thread_cache_size       = 64
query_cache_limit       = 8M
query_cache_size        = 64M
query_cache_type        = 1

max_connections         = 550

# log-bin should be on a disk with enough free space
# NOTE: replace '/x/home/mysql/logs/binary' below with
#       an appropriate path for your system.
log-bin=/x/home/mysql/logs/binary/mysql_binary_log

# For MySQL version 5.1.8 or later. Comment out binlog_format for older versions.
binlog_format           = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size          = 64M
innodb_buffer_pool_size         = 4G
innodb_thread_concurrency       = 8
innodb_flush_method             = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

4.7、创建后面在CM中会使用的数据库

root@m1:~# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or g. 
Your MySQL connection id is 42 
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu) 

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. 

## Cloudera manager db user, database and grant
mysql> create user 'cmf'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> create database cmf  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec) 

mysql> grant all privileges on cmf.* to 'cmf'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

## For activity monitor 
mysql> create user 'amon'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> create database amon  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec) 

mysql> grant all privileges on amon.* to 'amon'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

## Hive Meta store 
mysql> create user 'hive'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> create database metastore  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec) 

mysql> grant all privileges on metastore.* to 'hive'@'%' identified by 'xyz'; 
Query OK, 0 rows affected (0.00 sec) 

## Flush all changes 
mysql> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec)

4.8、重启MySql,查看3306端口,并安装MySql、Java的支持

root@m1:~# service mysql restart
root@m1:~# netstat -tulpn | grep :3306 
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2207/mysqld
root@m1:~# apt-get install libmysql-java 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Suggested packages: 
liblog4j1.2-java libcommons-logging-java 
The following NEW packages will be installed: 
libmysql-java 
0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded. 
Need to get 894 kB of archives. 
After this operation, 1,060 kB of additional disk space will be used. 
Get:1 http://mirrors.sohu.com/ubuntu/ trusty/universe libmysql-java all 5.1.28-1 [894 kB] 
Fetched 894 kB in 1s (718 kB/s) 
Selecting previously unselected package libmysql-java. 
(Reading database ... 96338 files and directories currently installed.) 
Preparing to unpack .../libmysql-java_5.1.28-1_all.deb ... 
Unpacking libmysql-java (5.1.28-1) ... 
Setting up libmysql-java (5.1.28-1) ... 
root@m1:~#

4.9、安装Cloudera Manager组件

4.9.1、将Ubuntu 14.04暂时伪造成Ubuntu12.04

  Ubuntu 14.04暂时伪造成Ubuntu12.04,因为在写本文时CM现在还不支持14.04这个版本,CDH以后的版本应该会支持吧(4台机器都要执行)
  备份文件:

root@m1:~# cp /etc/lsb-release /etc/lsb-release.bak 

  使用VI编译文件,暂时修改成Ubuntu12.04 LTS的信息:

root@m1:~# vi /etc/lsb-release 
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=12.04 
DISTRIB_CODENAME=precise 
DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"

4.9.2、升级Ubuntu的utils包,CM所必需要

  在所有机器上安装debian的包,升级utils,执行以下命令:(4台机器都要执行)

root@m1:~# wget http://ftp.cn.debian.com/debian/pool/main/f/fuse/fuse-utils_2.9.0-2+deb7u1_all.deb
root@m1:~# dpkg -i fuse-utils_2.9.0-2+deb7u1_all.deb

4.9.3、将CDH5的软件源添加到Apt中

root@m1:~# curl "http://archive.cloudera.com/cm5/ubuntu/precise/amd64/cm/cloudera.list" -o /etc/apt/sources.list.d/cloudera_precise.list
root@m1:~# curl -s http://archive.cloudera.com/cdh5/ubuntu/precise/amd64/cdh/archive.key | sudo apt-key add -
root@m1:~# apt-get update

4.9.4、安装Cloudera Manager

  安装Cloudera Manager(4台机器都要执行)

root@m1:~# apt-get install cloudera-manager-daemons cloudera-manager-server

4.9.5、修改Cloudera-Manager-Server的配置文件db.properties,设置MySql连接

  修改Cloudera-Manager-Server的配置文件db.properties,设置刚才我们在(4.7)Mysql中创建的cmf数据库、用户名、密码(4台机器都要执行)

root@m1:~# vi /etc/cloudera-scm-server/db.properties 
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=m1.linuxidc.com
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=xyz

4.9.6、安装ntp ,CM agents需要用到”ntpdc”

  安装ntp ,CM agents需要用到”ntpdc”(4台机器都要执行)

root@m1:~# apt-get install ntp 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
The following extra packages will be installed: 
libopts25 
Suggested packages: 
ntp-doc 
The following NEW packages will be installed: 
libopts25 ntp 
0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded. 
Need to get 666 kB of archives. 
After this operation, 1,668 kB of additional disk space will be used. 
Do you want to continue? [Y/n] y 
Get:1 http://mirrors.sohu.com/ubuntu/ trusty/main libopts25 amd64 1:5.18-2ubuntu2 [55.3 kB] 
Get:2 http://mirrors.sohu.com/ubuntu/ trusty/main ntp amd64 1:4.2.6.p5+dfsg-3ubuntu2 [611 kB] 
Fetched 666 kB in 1s (537 kB/s) 
Selecting previously unselected package libopts25:amd64. 
(Reading database ... 95843 files and directories currently installed.) 
Preparing to unpack .../libopts25_1%3a5.18-2ubuntu2_amd64.deb ... 
Unpacking libopts25:amd64 (1:5.18-2ubuntu2) ... 
Selecting previously unselected package ntp. 
Preparing to unpack .../ntp_1%3a4.2.6.p5+dfsg-3ubuntu2_amd64.deb ... 
Unpacking ntp (1:4.2.6.p5+dfsg-3ubuntu2) ... 
Processing triggers for man-db (2.6.7.1-1) ... 
Processing triggers for ureadahead (0.100.0-16) ... 
Setting up libopts25:amd64 (1:5.18-2ubuntu2) ... 
Setting up ntp (1:4.2.6.p5+dfsg-3ubuntu2) ... 
* Starting NTP server ntpd [ OK ] 
Processing triggers for libc-bin (2.19-0ubuntu6.1) ... 
Processing triggers for ureadahead (0.100.0-16) ... 
root@m1:~#

4.9.7、重启Cloudera Manager Server

  启动Cloudera manager (4台机器都要执行)

root@m1:~# service cloudera-scm-server start 
Starting cloudera-scm-server: * cloudera-scm-server started 
root@m1:~#
  • 1
  • 2
  • 3

  查看Cloudera manager的启动日志,如果能够看到下面的类似信息,说明启动正确,tailf -100 /var/log/cloudera-scm-server/cloudera-scm-server.log或者/var/log/cloudera-scm-server/cloudera-scm-server.out,如果看不到类似下面的信息,那么也可以看到哪里出了问题,大多数都是和数据库的配置有关系。

2014-08-26 23:07:52,643 INFO [JvmPauseMonitor:debug.JvmPauseMonitor@236] Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 1182ms: GC pool 'Copy' had collection(s): count=1 time=1641ms 
2014-08-26 23:07:52,644 INFO [JvmPauseMonitor:debug.JvmPauseMonitor@236] Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 1634ms: GC pool 'Copy' had collection(s): count=1 time=1641ms 
2014-08-26 23:07:52,696 INFO [WebServerImpl:servlet.DispatcherServlet@339] FrameworkServlet 'Spring MVC Dispatcher Servlet': initialization completed in 18068 ms 
2014-08-26 23:07:52,793 INFO [WebServerImpl:cmon.JobDetailGatekeeper@127] ActivityMonitor configured to allow job details for all jobs. 
2014-08-26 23:07:53,407 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@399] Initializing SearchTemplateManager:2014-08-27T06:07:53.407Z 
2014-08-26 23:07:53,730 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@403] Generating entities:2014-08-27T06:07:53.730Z 
2014-08-26 23:07:53,821 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@407] Num entities:112 
2014-08-26 23:07:53,822 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@409] Generating documents:2014-08-27T06:07:53.822Z 
2014-08-26 23:07:53,891 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@411] Num docs:124 
2014-08-26 23:07:53,892 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@352] Constructing repo:2014-08-27T06:07:53.892Z 
2014-08-26 23:07:53,979 INFO [WebServerImpl:mortbay.log@67] jetty-6.1.26.cloudera.2 
2014-08-26 23:07:54,008 INFO [WebServerImpl:mortbay.log@67] Started [email protected]:7180 
2014-08-26 23:07:54,009 INFO [WebServerImpl:cmf.WebServerImpl@292] Started Jetty server. 
2014-08-26 23:07:55,276 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@354] Finished constructing repo:2014-08-27T06:07:55.276Z

4.10、通过Web方式继续安装

4.10.1、创建update-alternatives工具在/usr/sbin/下创建软链

  创建update-alternatives工具在/usr/sbin/下创建软链(在4台机器上一起执行)(4台机器都要执行)

root@m1:~# sudo ln -s /usr/bin/update-alternatives /usr/sbin/update-alternatives
  • 1

4.10.2、打开浏览器,输入 http://m1.linuxidc.com:7180/ 开始安装

  使用浏览器打开能够看到登录页面,那么恭喜你成功了。 http://m1.linuxidc.com:7180/(帐号和密码都是admin)

未分类

4.10.3、选择安装的CDH版本

  我们来安装Cloudera Express,之前官方有说这个版本有50个节点的限制,在CDH5.1.0版本也有看到,在写本文记录时的5.1.2版本不知道为什么我在安装的时候并未看到。
  
未分类

4.10.4、为CDH集群添加主机

  选择指定的CDH集群,可以添加多台机器,也可以使用IP匹配,输入完机器名称后,点search按钮,我输入的内容为”m1.linuxidc.com”
  
未分类

  CDH会根据你给出的内容,搜索到机器
  
未分类

4.10.5、选择CDH的安装方式

  选择存储方式,我们使用Parcel方式安装。系统会自动下载Parcel
  
未分类
  
  是否需要加密,如果你不考虑这些,可以不用选择这个复选框
  
未分类

  
  提供SSH登录凭据,这里建议使用root帐号,避免一些新同学,对其他帐号的权限设置不完整,导致后面安装出现错误。如何设置4台机器之前SSH免密码登录,就不在这里介绍了,如果不会,可以去搜索下。在这之前4台机器请配置好SSH免密码登录。
 
未分类
  
  安装过程中的状态,会下载CDH使用的包,可能会慢一些,要有耐心~~~~
  
未分类
  
  如果在安装过程中出现了以下错误“ImportError: No module named _io”,或者如下图中的提示,不用担心,这是一个已知问题。这是因为CDH5使用的Python版本问题。执行完下面的脚本后,点击重试就可以顺利的完成安装了。如果出现打不开CM Agent的log日志提示,那很可能是你的Host配置有问题,请参考本文最初写的Host配置。

root@m1:~# mv /usr/lib/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/build/env/bin/python.bak
root@m1:~# cp /usr/bin/python2.7 /usr/lib/cmf/agent/build/env/bin/python

  安装完成了

未分类 

4.10.6、离线方式安装CDH的Parcel

  继续安装选定 Parcel

  如果你想要提高速度,可以按以下方法离线安装

    (1)、使用迅雷到http://archive.cloudera.com/cdh5/parcels/5.1.2/目录,下载CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel和mainfest.json文件

    (2)、上传到/opt/cloudera/parcel-repo目录中,同时创建一个CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha文件,内容为”a492e4b6dece2850f0a37f2bf613ecb2980dfd37”,这个值可以在下载目录中的manifest.json文件中找到。然后看相对应的json->parcelName同一级的hash值。

    (3)、下载http://archive.cloudera.com/accumulo-c5/parcels/1.6.0.51/ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel、http://archive.cloudera.com/sqoop-connectors/parcels/1.2/SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel、http://archive.cloudera.com/sqoop-connectors/parcels/1.2/SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel

    (4)、参考步骤2,创建相应的.sha文件,.sha文件中的内容如下:

root@m1:/opt/cloudera/parcel-repo# echo "a719f373833a63108c616afb034d97c4e11405d5" >> ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel.sha
root@m1:/opt/cloudera/parcel-repo# echo "a492e4b6dece2850f0a37f2bf613ecb2980dfd37"  >> CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha
root@m1:/opt/cloudera/parcel-repo# echo "48bedfff38f742d32541854e24b3310992616027" >> SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel.sha
root@m1:/opt/cloudera/parcel-repo# echo "76566b4797bd061d01cf25b36b21b26927ada9a4" >> SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel.sha

    (5)、设置文件的使用权限

root@m1:/opt/cloudera/parcel-repo# chmod 777 -R .
root@m1:/opt/cloudera/parcel-repo# chown cloudera-scm:cloudera-scm ./*

    (6)、查看下载后的文件列表

root@m1:/opt/cloudera/parcel-repo# ll 
total 1709280 
drwxrwxrwx 2 cloudera-scm cloudera-scm 4096 Sep 1 01:16 ./ 
drwxr-xr-x 6 root root 4096 Sep 1 01:51 ../ 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 13204338 Aug 31 21:37 ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:15 ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel.sha* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 1727519860 Sep 1 00:27 CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:15 CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 41602 Sep 1 01:13 SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:16 SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel.sha* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 9499051 Sep 1 01:13 SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel* 
-rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:16 SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel.sha*

未分类
   
  主机正确性检查,和当前m1.linuxidc.com的CDH5.12组件版本汇总。
  
未分类

未分类    

4.10.7、在m1.linuxidc.com上安装ZooKeeper服务

  选择要安装的集群服务,我们来安装ZooKeeper。如下图选择

未分类
  
  自定义角色分配

未分类
  
  数据库设置,我们输入之前在MySql中(4.7)创建的Activity Monitor使用的数据库amon以及用户名、密码,点击测试链接,可以看到成功信息。
  
未分类
  
  审核更改,如果你没有邮件要配置,可以什么都不用输入

未分类
  
  
  升级完成,并且成功启动ZooKeeper、CM Service服务。

未分类  

4.10.8、初始化完成,进入CM主页

  升级完成,就可以进入主页

未分类
  
  查看m1.linuxidc.com的运行状态

未分类

4.10.9、恢复Ubuntu 14.04版本信息

  最后我们恢复ubuntu 14.04版本信息

root@cm1:~# rm /etc/lsb-release /etc/lsb-release.bak
root@cm1:~# mv /etc/lsb-release.bak  /etc/lsb-release
  • 1
  • 2

4.11、通过CM管理多个集群

4.11.1、添加1个新的集群,机器名称为m2.linuxidc.com

  有的时候,因为业务原因,不同的服务我们要使用不同的集群,便于管理和维护,下面我们再使用CM来测试创建一个新集群Cluster 2
  添加其他主机,我们测试将m2.linuxidc.com也做为一个新集群添加到CM中。点击CM主页右上角的添加集群,会重复看到(参考4.10.4章节)的页面
  
未分类

未分类

  再继续安装,可以参考(4.10.5章节-4.10.7章节)的页面重复操作,下面只给出将m2.linuxidc.com加入到集群的安装过程中部分截图。
  m2.linuxidc.com机器上要有cloudera-manager-server、cloudera-manager-daemons、cloudera-manager-agent(这个可以不用安装,但机器上要有包)。cloudera-manager-server、cloudera-manager-daemons的安装,可以参考4.9.4章节,配置可以参考4.9.5章节,服务是启动状态。
  
未分类

未分类

未分类

4.11.2、完成安装,验证m2.linuxidc.com是否成功地添加到集群Cluster 2

未分类

4.12、向1个集群添加1台新主机

4.12.1、开始添加,输入要添加的机器名称s1.linuxidc.com

未分类
  
  选择存储库,为了保持统一,建议使用与当前CM一样的版本,然后会继续走4.10.5的步骤
  
未分类
  
  再继续安装,可以参考(4.10.5章节-4.10.7章节)的页面重复操作,下面只给出将s1.linuxidc.com加入到集群的安装过程中部分截图。
  m2.linuxidc.com机器上要有cloudera-manager-server、cloudera-manager-daemons、cloudera-manager-agent(这个可以不用安装,但机器上要有包)。
  cloudera-manager-server、cloudera-manager-daemons的安装,可以参考4.9.4章节,配置参考4.9.5章节。cloudera-manager-server的服务要在启动状态。

未分类

未分类

4.12.2、选择主机模

未分类

未分类

未分类

4.12.3、完成将s1.linuxidc.com添加到集群

未分类

4.12.4、验证s1.linuxidc.com是否成功地添加到集群Cluster 1

未分类

未分类

  到此为主,在Ubuntu 14.04下使用apt-get方式,安装CDH5.12已经成功。并且支持中文,后面有什么服务或者机器要添加的,可以自己来做了。

5、FAQ

5.1、过程中如果出现”Incorrect string value: ‘x“的提示

  是和数据库的编码有关,在mysql中执行以下语句:

alter table CLIENT_CONFIGS convert to character set utf8;
alter table CLUSTERS convert to character set utf8;
alter table CLUSTERS_AUD convert to character set utf8;
alter table CLUSTER_ACTIVATED_RELEASES convert to character set utf8;
alter table CLUSTER_ACTIVATED_RELEASES_AUD convert to character set utf8;
alter table CLUSTER_MANAGED_RELEASES convert to character set utf8;
alter table CLUSTER_UNDISTRIBUTED_RELEASES convert to character set utf8;
alter table CM_PEERS convert to character set utf8;
alter table CM_VERSION convert to character set utf8;
alter table COMMANDS convert to character set utf8;
alter table COMMAND_SCHEDULES convert to character set utf8;
alter table CONFIGS convert to character set utf8;
alter table CONFIGS_AUD convert to character set utf8;
alter table CONFIG_CONTAINERS convert to character set utf8;
alter table CREDENTIALS convert to character set utf8;
alter table GLOBAL_SETTINGS convert to character set utf8;
alter table HOSTS convert to character set utf8;
alter table HOSTS_AUD convert to character set utf8;
alter table HOST_TEMPLATES convert to character set utf8;
alter table HOST_TEMPLATE_TO_ROLE_CONF_GRP convert to character set utf8;
alter table METRICS convert to character set utf8;
alter table PARCELS convert to character set utf8;
alter table PARCEL_COMPONENTS convert to character set utf8;
alter table PROCESSES convert to character set utf8;
alter table PROCESS_ACTIVE_RELEASES convert to character set utf8;
alter table RELEASES convert to character set utf8;
alter table RELEASES_AUD convert to character set utf8;
alter table REVISIONS convert to character set utf8;
alter table ROLES convert to character set utf8;
alter table ROLES_AUD convert to character set utf8;
alter table ROLE_CONFIG_GROUPS convert to character set utf8;
alter table ROLE_CONFIG_GROUPS_AUD convert to character set utf8;
alter table ROLE_STALENESS_STATUS convert to character set utf8;
alter table SCHEMA_VERSION convert to character set utf8;
alter table SERVICES convert to character set utf8;
alter table SERVICES_AUD convert to character set utf8;
alter table SNAPSHOT_POLICIES convert to character set utf8;
alter table USERS convert to character set utf8;
alter table USER_ROLES convert to character set utf8;
alter table USER_SETTINGS convert to character set utf8;

apache .htaccess文件详解和配置技巧总结

一、.htaccess的基本作用

   .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
   .htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
   .htaccess的用途范围主要针对当前目录。

二、启用.htaccess的配置

启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。
打开httpd.conf文件用文本编辑器打开后,查找

复制代码代码如下:

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

改为:

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:

复制代码代码如下:

AccessFileName .config

三、.htaccess访问控制

1、访问控制基础:Order命令

  为了限制用户访问一些关键目录,通常加入.htaccess文件,常见的写法如下:

复制代码代码如下:

<Files  ~ "^.*.([Ll][Oo][Gg])|([eE][xX][eE])">
 Order allow,deny
 Deny from all
</Files>

说明:

(1)Files后的波浪线表示启用“正则表达式”,简单的写法有:。

(2)Order命令:通过Allow,Deny参数,Apache首先找到并应用Allow命令,然后应用Deny命令,以阻止所有访问,也可以使用Deny,Allow。

四、URL重写

下面是一段简单的URL重写规则示例:

复制代码代码如下:

# 将 RewriteEngine 模式打开 
RewriteEngine On 
# Rewrite 系统规则请勿修改 
RewriteRule ^p/([0-9]+).html$ index.php?post_id=$1
RewriteRule ^u-(username|uid)-(.+).html$ space.php?$1=$2

其中,RewriteEngine 表示开启URL重写,RewriteRule是重写规则。

五、配置错误页面

基本语法如下:

复制代码代码如下:

# custom error documents
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php

六、htaccess常用命令和配置技巧

1. 禁止显示目录列表

有些时候,由于某种原因,你的目录里没有index文件,这意味着当有人在浏览器地址栏键入了该目录的路径,该目录下所有的文件都会显示出来,这会给你的网站留下安全隐患。

为避免这种情况(而不必创建一堆的新index文件),你可以在你的.htaccess文档中键入以下命令,用以阻止
目录列表的显示:

复制代码代码如下:

Options -Indexes

2. 阻止/允许特定的IP地址

某些情况下,你可能只想允许某些特定IP的用户可以访问你的网站(例如:只允许使用特定ISP的用户进入某个目录),或者想封禁某些特定的IP地址(例如:将低级用户隔离于你的信息版面外)。当然,这只在你知道你想拦截的IP地址时才有用,然而现在网上的大多数用户都使用动态IP地址,所以这并不是限制使用的常用方法。
你可以使用以下命令封禁一个IP地址:

复制代码代码如下:

deny from 000.000.000.000

这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.,则将封禁210.10.56.0~210.10.56.255的所有IP地址。

你可以使用以下命令允许一个IP地址访问网站:

复制代码代码如下:

allow from 000.000.000.000

被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样允许整个网段。

如果你想阻止所有人访问该目录,则可以使用:

复制代码代码如下:

deny from all

不过这并不影响脚本程序使用这个目录下的文档。

3. 替换index文件

也许你不想一直使用index.htm或index.html作为目录的索引文件。举例来说,如果你的站点使用PHP文件,你可能会想使用 index.php来作为该目录的索引文档。当然也不必局限于“index”文档,如果你愿意,使用.htaccess你甚至能够设置 foofoo.balh来作为你的索引文档!

这些互为替换的索引文件可以排成一个列表,服务器会从左至右进行寻找,检查哪个文档在真实的目录中存在。如果一个也找不到,它将会把目录列表显示出来(除非你已经关闭了显示目录文件列表)。

复制代码代码如下:

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm

4. 重定向(rewrite)

.htaccess 最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现的很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:

复制代码代码如下:

Redirect /location/from/root/file.ext http:///new/file/location.xyz

上述例子中,访问在root目录下的名为oldfile.html可以键入:

复制代码代码如下:

/oldfile.html

访问一个旧次级目录中的文件可以键入:

复制代码代码如下:

/old/oldfile.html

你也可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,并且你已经在一个新网站http: ///newdirectory/上建立了与上相同的文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:

复制代码代码如下:

Redirect /olddirectory http: ///newdirectory

这样,任何指向到站点中/olddirectory目录的请求都将被重新指向新的站点,包括附加的额外URL信息。例如有人键入:

复制代码代码如下:

http: ///olddirecotry/oldfiles/images/image.gif

请求将被重定向到:

复制代码代码如下:

http: ///newdirectory/oldfiles/images/image.gif

如果正确使用,此功能将极其强大。

七、安全配置

下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。

1. 通过.htaccess放盗链

痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。

复制代码代码如下:

RewriteBase /  
RewriteCond %{HTTP_REFERER} !^$  
RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC]  
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] 

2. 防黑客

如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。

复制代码代码如下:

RewriteEngine On  

# proc/self/environ? 没门!  
RewriteCond %{QUERY_STRING} proc/self/environ [OR]  

# 阻止脚本企图通过URL修改mosConfig值  
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]  

# 阻止脚本通过URL传递的base64_encode垃圾信息  
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]  

# 阻止在URL含有<script>标记的脚本  
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]  

# 阻止企图通过URL设置PHP的GLOBALS变量的脚本  
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]  

# 阻止企图通过URL设置PHP的_REQUEST变量的脚本  
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})  

# 把所有被阻止的请求转向到403禁止提示页面!  
RewriteRule ^(.*)$ index.php [F,L] 

3. 阻止访问你的 .htaccess 文件或者指定类型的文件

下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。

# 保护你的 htaccess 文件  
<Files .htaccess>  
order allow,deny  
deny from all  
</Files>  

# 阻止查看指定的文件  
<Files secretfile.jpg>  
order allow,deny  
deny from all  
</Files>  

# 多种文件类型  
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>  
 Order Allow,Deny  
Deny from all  
</FilesMatch>[/code] 

4.禁止脚本执行,加强你的目录安全

复制代码代码如下:

# 禁止某些目录里的脚本执行权限  
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi  
Options -ExecCGI

八、一些常用的设置

1. 时区设置

有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。
1.SetEnv TZ Australia/Melbourne

2. seo/seo.html” target=”_blank”>搜索引擎友好的301永久转向方法

为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。

复制代码代码如下:

Redirect 301 http://www.aqee.net/home http://www.aqee.net/ 

3. 屏蔽下载对话框

通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。

复制代码代码如下:

AddType application/octet-stream .pdf  
AddType application/octet-stream .zip  
AddType application/octet-stream .mov 

4. 省去www前缀

SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。

复制代码代码如下:

RewriteEngine On  
RewriteBase /  
RewriteCond %{HTTP_HOST} ^www.aqee.net [NC]  
RewriteRule ^(.*)$ http://aqee.net/$1 [L,R=301]

5. 个性化Error页面

对每个错误代码定制自己个性化的错误页面。

复制代码代码如下:

ErrorDocument 401 /error/401.php  
ErrorDocument 403 /error/403.php  
ErrorDocument 404 /error/404.php  
ErrorDocument 500 /error/500.php

6. 压缩文件

通过压缩你的文件体积来优化网站的访问速度。

复制代码代码如下:

# 压缩 text, html, javascript, css, xml:  
AddOutputFilterByType DEFLATE text/plain  
AddOutputFilterByType DEFLATE text/html  
AddOutputFilterByType DEFLATE text/xml  
AddOutputFilterByType DEFLATE text/css  
AddOutputFilterByType DEFLATE application/xml  
AddOutputFilterByType DEFLATE application/xhtml+xml  
AddOutputFilterByType DEFLATE application/rss+xml  
AddOutputFilterByType DEFLATE application/javascript  
.AddOutputFilterByType DEFLATE application/x-javascript 

7. 缓存文件

缓存文件是另外一个提高你的网站访问速度的好方法。

复制代码代码如下:

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>  
Header set Cache-Control “max-age=2592000″  
</FilesMatch> 

8. 对某些文件类型禁止使用缓存

而另一方面,你也可以定制对某些文件类型禁止使用缓存。

复制代码代码如下:

# 显式的规定对脚本和其它动态文件禁止使用缓存  
<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>  
Header unset Cache-Control  
</FilesMatch>