Rootop 服务器运维与web架构

2015-05-12
发表者 Venus
tr (Text Replacer) 文本替换举例已关闭评论

tr (Text Replacer) 文本替换举例

tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:
tr -c -d -s [“string1_to_translate_from”] [“string2_to_translate_to”] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。

字符范围
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z]    a-z内的字符组成的字符串。
[A-Z]  A-Z内的字符组成的字符串。
[0-9]   数字串。
\octal  一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\a Ctrl-G  铃声\007
\b Ctrl-H  退格符\010
\f Ctrl-L  走行换页\014
\n Ctrl-J  新行\012
\r Ctrl-M  回车\015
\t Ctrl-I  tab键\011
\v Ctrl-X  \030

测试文件内容为:
[root@localhost www]# cat txt
123
abc
a
b
c
abcde

1、现将字符a、b、c替换为x、y、z:
[root@localhost www]# cat txt | tr “abc” “xyz” > txt10
[root@localhost www]# cat txt10
123
xyz
x
y
z
xyzde
注意是替换的单个字符,而不是字符串abc

2、统一转换为大写:
[root@localhost www]# cat txt | tr [a-z] [A-Z] > txt11
[root@localhost www]# cat txt11
123
ABC
A
B
C
ABCDE

3、统一转换为小写:
[root@localhost www]# cat txt11
123
ABC
A
B
C
ABCDE
[root@localhost www]# cat txt11 | tr [A-Z] [a-z] > txt12
[root@localhost www]# cat txt12
123
abc
a
b
c
abcde

4、0-9替换为a-j(2种方法):
[root@localhost www]# cat 09.txt
0 1 2 3 4 5 6 7 8 9
[root@localhost www]# cat 09.txt | tr “0-9” “a-j” > aj.txt
[root@localhost www]# cat aj.txt
a b c d e f g h i j
[root@localhost www]# cat 09.txt | tr [0-9] [a-j] > aj2.txt
[root@localhost www]# cat aj2.txt
a b c d e f g h i j

5、删除a、b、c 3个字符:
root@localhost www]# cat txt | tr -d “abc” > txt5.txt
[root@localhost www]# cat txt5.txt
123

de

6、删除换行、制表符:
在第5步时删除abc,导致出现空行,这次删除换行符和制表符,合并为一行。
[root@localhost www]# cat txt5.txt | tr -d “\n\t” > txt6.txt
[root@localhost www]# cat txt6.txt
123de

7、删除连续的字符,只保留第一个字符:
[root@localhost www]# cat aaa.txt
aaabbbcccdef
AAABBBCCCDEF
[root@localhost www]#  cat aaa.txt | tr -s [a-z][A-Z] > aaa2.txt
[root@localhost www]# cat aaa2.txt
abcdef
ABCDEF

8、删除空行:
[root@localhost www]# cat txt5.txt
123

de
[root@localhost www]# cat txt5.txt | tr -s “\n” > txt15.txt
[root@localhost www]# cat txt15.txt
123
de

9、用空格\040替代制表符\011:
[root@localhost www]# cat s.txt
hello    master  #这里空开的部分为tab键敲击出来
hello
[root@localhost www]# cat s.txt | tr -s “\011” “\040” > s2.txt
[root@localhost www]# cat s2.txt
hello master  #替换为空格
hello

2015-05-01
发表者 Venus
Centos安装中文语言包安装已关闭评论

Centos安装中文语言包安装

yum方式——完全的中文环境支持。
[root@f5ha.com ~]#yum groupinstall chinese-support
[root@f5ha.com ~]# yum groupinstall <language>-support

在上面的命令中,<language> 是下列之一: assamese, bengali, chinese, gujarati, hindi, japanese, kannada, korean, malayalam, marathi, oriya, punjabi, sinhala, tamil, thai, 或 telegu。

[root@centos-6.5-x64 ~]#vi /etc/sysconfig/i18n
LANG=”zh_CN.UTF-8″

[root@centos-6.5-x64 ~]#export LANG=”zh_CN.UTF-8″

2015-04-24
发表者 Venus
centos7中firewalld防火墙整理文档已关闭评论

centos7中firewalld防火墙整理文档

区域(zones)默认情况下内置了一些有效的区域。我们需要为网络接口分配区域。
区域(zones)规定了区域是网络接口信任或者不信任网络连接的标准。
区域(zones)包含服务和端口。

Firewalld中的区域(zones)。

丢弃区域(Drop Zone) :如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。
阻塞区域(Block Zone) :阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过。
公共区域(Public Zone) :只接受那些被选中的连接,而这些通过在公共区域中定义相关规则实现。服务器可以通过特定的端口数据,而其它的连接将被丢弃。
外部区域(External Zone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,而其它的连接将被丢弃或者不被接受。
隔离区域(DMZ Zone) :如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性。
工作区域(Work Zone) :在这个区域,我们只能定义内部网络。比如私有网络通信才被允许。
家庭区域(Home Zone) :这个区域专门用于家庭环境。我们可以利用这个区域来信任网络上其它主机不会侵害你的主机。它同样只允许被选中的连接。
内部区域(Internal Zone):这个区域和工作区域(Work Zone)类似,只有通过被选中的连接。
信任区域(Trusted Zone) :信任区域允许所有网络通信通过。

查看所有区域:

[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

查看默认区域:

[root@localhost ~]# firewall-cmd --get-default-zone
public

查看所有区域详细信息:

[root@localhost ~]# firewall-cmd --list-all-zones
这条命令列出每种区域如block、dmz、drop、external、home、internal、public、trusted以及work。如果区域还有其它详细规则(rich-rules)、启用的服务或者端口,这些区域信息也会分别被罗列出来。

修改默认区域:

[root@localhost ~]# firewall-cmd --set-default-zone=internal
success
[root@localhost ~]# firewall-cmd --get-default-zone
internal

更改的默认区域都会在 /etc/firewalld/firewalld.conf 中体现出来(DefaultZone=)

查看接口绑定在哪个区域:

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens192 #接口名称
internal

icmp类型:

[root@localhost ~]# firewall-cmd --get-icmptype
destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded

查看firewall的预定义服务:

[root@localhost ~]# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps
libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client
smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

这些预定义服务配置文件位于 /usr/lib/firewalld/services 下,并且以服务名命名。

创建自定义服务:
拷贝一个预定义服务配置文件到firewalld目录下的services,比如rtmp服务,端口号为1935,协议为tcp。

[root@localhost ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/rtmp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
 <short>rtmp</short>
 <description>rtmp media service.</description>
 <port protocol="tcp" port="1935"/>
</service>

short 部分为简短头部信息
description 为服务描述
port 定义协议类型及端口号

重新载入设置,不断开已连接的会话:

[root@localhost ~]# firewall-cmd --reload
success

重新载入设置,会断开已连接的会话:

[root@localhost ~]# firewall-cmd --complete-reload
success

查看自定义服务是否加载:

[root@localhost ~]# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos
kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp
radius rpc-bind rtmp samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

查看运行状态:

[root@localhost ~]# firewall-cmd --state
running
[root@localhost ~]# firewall-cmd --get-active-zones
public
 interfaces: ens192

列出默认区域中有效的服务:

[root@localhost ~]# firewall-cmd --get-service
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos
kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp
radius rpc-bind rtmp samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

添加rtmp服务到区域中:

[root@localhost ~]# firewall-cmd --add-service=rtmp #临时添加,重启服务时效。
[root@localhost ~]# firewall-cmd --permanent --add-service=rtmp #永久生效,写入到当前区域的配置文件(/etc/firewalld/zones/public.xml)。

移除服务:

[root@localhost ~]# firewall-cmd --zone=public --remove-service=rtmp
success
注意:通过firewall-cmd --add-service=rtmp添加服务,会立即生效,如果加--permanent参数需要重新载入服务(firewall-cmd --reload)生效。
在移除服务时,不加--permanent参数只是临时移除,重新载入服务,依旧存在。

添加端口到默认区域:

[root@localhost ~]# firewall-cmd --permanent --add-port=8080/tcp #直接写入到/etc/firewalld/zones/public.xml
然后执行firewall-cmd --reload 生效。

添加批量端口到默认区域:

[root@localhost ~]# firewall-cmd --permanent --add-port=2000-3000/tcp
success

2015-04-17
发表者 Venus
centos6.6搭建hadoop-1.2测试环境已关闭评论

centos6.6搭建hadoop-1.2测试环境

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。
一个HDFS集群是由一个NameNode和若干个DataNode组成的。
其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作,集群中的DataNode管理存储的数据。
MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。
当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。
HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。
HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

系统版本       : Centos6.6 x64
hadoop版本: hadoop-1.2.1
JDK版本      : jdk-7u67-linux-x64.rpm

1、系统信息

IP地址: 主机名:
192.168.0.171 Master.Hadoop
192.168.0.172 Slave1.Hadoop
192.168.0.173 Slave2.Hadoop
192.168.0.174 Slave3.Hadoop

根据上面信息修改各主机的主机名

2、添加主机名与ip映射
编辑/etc/hosts 添加 (4台机器均添加

192.168.0.171 Master.Hadoop
192.168.0.172 Slave1.Hadoop
192.168.0.173 Slave2.Hadoop
192.168.0.174 Slave3.Hadoop

3、关闭iptable及selinux (4台机器均执行)

service iptables stop
chkconfig iptables off
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux

4、安装配置JDK (4台机器均执行)
[root@Master ~]# rpm -ivh jdk-7u67-linux-x64.rpm
添加环境变量,追加以下参数到 /etc/profile 中

export JAVA_HOME=/usr/java/jdk1.7.0_67/
export JRE_HOME=/usr/java/jdk1.7.0_67/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

使之生效执行: source /etc/profile

5、配置ssh登陆互相信任

[root@Master ~]# ssh-keygen -t rsa   #一路回车
拷贝公钥到另外三台机器(包括本机)
[root@Master ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.171/172/173/174

另外3台slave也需要配置hadoop集群之间互相信任,过程略。

6、安装hadoop (另外3台也需要配置)

[root@Master ~]# tar zxvf hadoop-1.2.1.tar.gz
[root@Master ~]# cp -R hadoop-1.2.1 /usr/local/hadoop
[root@Master ~]# mkdir /usr/local/hadoop/tmp

添加hadoop变量信息,编辑/etc/profile 追加下面部分:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

source /etc/profile 使之生效。

7、编辑hadoop配置文件:
首先编辑 hadoop-env.sh,追加一行参数:
[root@Master ~]# vi /usr/local/hadoop/conf/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67/

开始配置:
[root@Master ~]# cd /usr/local/hadoop/conf/

修改Hadoop核心配置文件core-site.xml配置HDFS地址和端口:
[root@Master conf]# vi core-site.xml

<configuration>

 <property>
 <name>hadoop.tmp.dir</name>
 <value>/usr/local/hadoop/tmp</value> #之前创建的tmp文件夹
 <description>A base for other temporary directories.</description>
 </property>
<!-- file system properties -->
 <property>
 <name>fs.default.name</name>
 <value>hdfs://192.168.0.171:9000</value> #地址+端口
 </property>

</configuration>

备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。

[root@Master conf]# vi hdfs-site.xml

<configuration>

 <property>
 <name>dfs.replication</name>
 <value>3</value> #数据副本数量默认为3,salve少于3台就会报错
 </property>

</configuration>

配置JobTracker地址和端口:
[root@Master conf]# vi mapred-site.xml

<configuration>

 <property>
 <name>mapred.job.tracker</name>
 <value>http://192.168.0.171:9001</value> #ip+端口
 </property>

</configuration>

配置主节点地址:
[root@Master conf]# vi masters #写主机名或IP,如果是主机名需要hosts映射

192.168.0.171

配置从节点地址:
[root@Master conf]# vi slaves #写主机名或IP,如果是主机名需要hosts映射

192.168.0.172
192.168.0.173
192.168.0.174

8、复制配置文件到从节点(3个从节点都复制过去)
[root@Master conf]# scp * root@192.168.0.172:/usr/local/hadoop/conf/
[root@Master conf]# scp * root@192.168.0.173:/usr/local/hadoop/conf/
[root@Master conf]# scp * root@192.168.0.174:/usr/local/hadoop/conf/
slaves 这个配置文件不需要复制到从节点,我这里偷懒直接用*号同步全部。

9、格式化HDFS文件系统
在”Master.Hadoop”上使用普通用户hadoop进行操作。(只需格式化一次,下次启动只需执行 start-all.sh )
我这里用root权限执行格式化
[root@Master ~]# hadoop namenode -format  #就一个减号
可能最后会提示一个警告,不过可以忽视。

10、启动hadoop
[root@Master ~]# start-all.sh

启动hadoop成功后在Master中的tmp文件夹中生成了dfs文件夹,在Slave中的tmp文件夹中均生成了dfs文件夹和mapred文件夹。

11、验证hadoop
在Master上用 java自带的工具 jps 查看进程:
[root@Master ~]# jps
2187 Jps
1921 SecondaryNameNode
2008 JobTracker
1775 NameNode

另一种方法用 hadoop dfsadmin -report 查看Hadoop集群的状态。
[root@Master ~]# hadoop dfsadmin -report
Warning: $HADOOP_HOME is deprecated.

Configured Capacity: 158131408896 (147.27 GB)
Present Capacity: 144937943040 (134.98 GB)
DFS Remaining: 144937795584 (134.98 GB)
DFS Used: 147456 (144 KB)
DFS Used%: 0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

————————————————-
Datanodes available: 3 (3 total, 0 dead)

Name: 192.168.0.173:50010
Decommission Status : Normal
Configured Capacity: 52710469632 (49.09 GB)
DFS Used: 49152 (48 KB)
Non DFS Used: 4397809664 (4.1 GB)
DFS Remaining: 48312610816(44.99 GB)
DFS Used%: 0%
DFS Remaining%: 91.66%
Last contact: Fri Apr 17 09:46:36 CST 2015

Name: 192.168.0.174:50010
Decommission Status : Normal
Configured Capacity: 52710469632 (49.09 GB)
DFS Used: 49152 (48 KB)
Non DFS Used: 4397830144 (4.1 GB)
DFS Remaining: 48312590336(44.99 GB)
DFS Used%: 0%
DFS Remaining%: 91.66%
Last contact: Fri Apr 17 09:46:38 CST 2015

Name: 192.168.0.172:50010
Decommission Status : Normal
Configured Capacity: 52710469632 (49.09 GB)
DFS Used: 49152 (48 KB)
Non DFS Used: 4397826048 (4.1 GB)
DFS Remaining: 48312594432(44.99 GB)
DFS Used%: 0%
DFS Remaining%: 91.66%
Last contact: Fri Apr 17 09:46:38 CST 2015

12、网页查看集群
访问:http://192.168.0.171:50030

访问:http://192.168.0.171:50070

完成。

PS:
在执行hadoop命令会提示个警告信息:
[root@Master ~]# hadoop
Warning: $HADOOP_HOME is deprecated.

编辑 /etc/profile 添加:
export HADOOP_HOME_WARN_SUPPRESS=1

执行source /etc/profile生效。