Python 学习笔记 老版本多线程使用
记录学习python 的点点滴滴, github:https://github.com/shadowagnoy/python_learn
‘’’
利用time函数,生成两个函数
顺序调用
计算总的运行时间
老版本线程池,不建议使用
‘’’
import time
import _thread as thread
def loop1():
# ctime 得到当前时间
print(‘Start loop 1 at :’, time.ctime())
# 睡眠多长时间,单位是秒
time.sleep(4)
print(‘End loop 1 at:’, time.ctime())
def loop2():
# ctime 得到当前时间
print(‘Start loop 2 at :’, time.ctime())
# 睡眠多长时间,单位是秒
time.sleep(2)
print(‘End loop 2 at:’, time.ctime())
def main():
print(“Starting at:”, time.ctime())
# 启动多线程的意思是用多线程去执行某个函数
# ...
YARN中内存资源和CPU资源配置
yarn 的修改是基于 hadoop2.7 。
【YARN****中内存资源的调度和隔离】
YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的。
1、yarn.nodemanager.resource.memory-mb:
yarn.nodemanager.resource.memory-mb
8192
表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
2、yarn.nodemanager.vmem-pmem-ratio
yarn.nodemanager.vmem-pmem-ratio
2.1
任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1。
3、yarn.nodemanager.pmem-check-enabled
yarn.nodemanager.pmem-c ...
SPARK1.6 分布式安装
安装的前提是 hadoop yarn 正在运行 开始安装
1、解压安装scala并配置环境变量
[hadoop@new-cdh9 soft]$ tar -zvxf scala-2.10.4.tgz
[hadoop@new-cdh13 ~]$ vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export SCALA_HOME=/hadoop/soft/scala-2.10.4/
export HADOOP_HOME=/hadoop/soft/hadoop-2.6.0-cdh5.7.0
#set zookeeper environment
export ZOOKEEPER_HOME=/hadoop/soft/zookeeper-3.4.5-cdh5.7.0
PATH=PATH:PATH:PATH:HOME/bin:ZOOKEEP ...
hbase 分布式安装
hadoop 集群分布式安装目录(一直更新) 安装开始:
1、解压
[hadoop@new-cdh5 soft]$ tar -zvxf hbase-1.2.0-cdh5.7.0.tar.gz
2、配置HBASE 的环境遍历
[hadoop@new-cdh6 soft]$ vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export HBASE_HOME=/hadoop/soft/hbase-1.2.0-cdh5.7.0
export HADOOP_HOME=/hadoop/soft/hadoop-2.6.0-cdh5.7.0
PATH=PATH:PATH:PATH:HOME/bin:HADOOP_HOME/bin:HADOOP\_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:$HBASE ...
hadoop 2.7 分布式安装 + HA
hadoop 2.7 分布式安装 + HA 开始安装:
1、解压hadoop并修改环境变量(每台机器)
[hadoop@new-cdh1 soft]$ tar -zvxf hadoop-2.6.0-cdh5.7.0.tar.gz
[hadoop@new-cdh1 soft]$ vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export HADOOP_HOME=/hadoop/soft/hadoop-2.6.0-cdh5.7.0
PATH=PATH:PATH:PATH:HOME/bin:HADOOP_HOME/bin:HADOOP\_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin
export PATH
[hadoop@new-cdh1 soft]$ source ~/.bash_prof ...
kafka 分布式安装
下载地址:http://mirrors.cnnic.cn/apache/kafka/0.9.0.1/kafka_2.10-0.9.0.1.tgz
分别在三台服务器(new-cdh15、new-cdh16、new-cdh17)上安装kafka:
1、解压
[hadoop@new-cdh15 soft]$ tar -zvxf kafka_2.10-0.9.0.1.tgz
2、修改配置
修改每台服务器的config/server.properties
broker.id: 唯一,填数字,可以填写ip 最后一个字段 15/16/17 host.name:唯一,填服务器IP
zookeeper.connect=new-cdh12:2181,new-cdh13:2181,new-cdh15:2181,new-cdh16:2181,new-cdh17:2181
log.dirs=/hadoop/tmp/kafka-logs :store log files
详细文档
[hadoop@new-cdh15 kafka_2.10-0.9.0.1]$ cat config/server.propertie ...
zookeeper 3.4.5 分布式安装
由于项目需要,需要在集群中安装好Zookeeper,这里我选择最新版本的Zookeeper3.4.5。 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。它也是Google的Chubby一个开源的实现,是高有效和可靠的协同工作系统,Zookeeper能够用来leader选举,配置信息维护等,在一个分布式的环境中,需要一个Master实例或存储一些配置信息,确保文件写入的一致性等。 当然你运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就越高,zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。这里我选择5台机器,hostname分别为new-cdh12、new-cdh13、new-cdh15、new-cdh16、new-cdh17。
安装步骤
1、解压
tar -zxvf zookeeper-3.4.5 ...
hadoop 2.7 手动安装(cdh5.7.0)目录
一直都是用cm 来安装 cdh ,刚好公司有有一些机器闲置,于是决定手动来安装一下cdh 5.7.0集群。
hadoop2.7 + HA + zookeeper3.4.5 + KAFKA0.9.0.1 + SPARK1.6 + HBASE1.2
软件地址:http://archive.cloudera.com/cdh5/cdh/5/
节点规划:
NN
DN
JN
ZK
ZKFC
SP
KF
HM
HRS
RM
NM
JH
new-cdh1
√
×
×
×
√
×
×
×
×
×
×
×
new-cdh2
√
×
×
×
√
×
×
×
×
×
×
×
new-cdh3
×
√
×
×
×
×
×
×
×
√
√
×
new-cdh4
×
√
×
×
×
×
×
×
×
√
√
×
new-cdh5
×
√
√
×
×
×
×
√
×
×
√
×
new-cdh6
×
√
√
×
×
×
×
×
√
×
√
×
new-cdh7
×
√
√
×
×
×
×
×
√
×
√
×
new-cdh9
×
√
×
×
×
√
×
×
√
×
√
×
new-cdh10
×
√
×
×
×
√
× ...
逆波兰表达式的应用
逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。
平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。
该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。
逆波兰表达式主要有以下两个优点:
去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。
适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。
中缀表达式和后缀表达式
将字符串表达式放入数组
将字符串表达式拆分成数组
12345678910111213141516171819202122232425262728293031public String[] notationStrToArray(String notationStr) { List<String> list = new ArrayList(); notationStr = notationStr.replaceAll(" " ...
环形单链表及其约瑟夫问题
将单链表改成环形单链表。使用环形单链表解决约瑟夫问题。
一、创建一个环形单链表
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818 ...