安装hadoop+zookeeper ha
- 安装hadoop+zookeeper ha
- 前期工作配置好网络和主机名和关闭防火墙
- chkconfig iptables off //关闭防火墙
- 1.安装好java并配置好相关变量 (/etc/profile)
- #java
- export JAVA_HOME=/usr/java/jdk1.8.0_65
- export JRE_HOME=$JAVA_HOME/jre
- export PATH=$PATH:$JAVA_HOME/bin
- export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar (最前面要有.)
- 保存退出
- source /etc/profile
- 2.设置好主机名和网络映射关系 (/etc/hosts)
- // hadoop.master为namenode
- // hadoop.slaver1/hadoop.slaver2/hadoop.slaver3 为datanode
- 192.168.22.241 hadoop.master
- 192.168.22.242 hadoop.slaver1
- 192.168.22.243 hadoop.slaver2
- 192.168.22.244 hadoop.slaver3
- 3.创建用户并创建密码(以root身份登陆)
- 1. useradd hadoop(或者其他用户名)
- 2. passwd hadoop (回车输入密码 两次)
- 3. su hadoop (使用hadoop用户登陆)
- 4.免密码登陆
- 1.安装ssh 具体百度 一般都自带有
- 2.创建在家目录底下创建.ssh目录(使用hadoop用户) mkdir ~/.ssh
- 3.创建公钥(namenode端运行)
- ssh-keygen -t rsa
- 一路回车
- 最后会在~/.ssh目录下生成id_rsa、id_rsa.pub 其中前者是密钥 后者是公钥
- 4.将id_rsa.pub文件拷贝到slaver节点的相同用户.ssh目录下
- scp -r id_rsa.pub 用户名@主机名:目标文件(含路径)
- 5.在各个子节点执行cat id_rsa.pub >> ~/.ssh/authorized_keys
- 6.设置权限
- chmod 600 authorized_keys
- cd ..
- chmod 700 -R .ssh
- 7.注意此时还不能免密码 需在master 节点运行ssh slaver 输入密码后才能免密码
- 5.安装zookeeper(三台 master slaver1 slaver2)
- 1.下载安装包
- 2.解压安装包
- tar zxvf zookeeper-3.4.7.tar.gz
- 3.配置环境变量
- #zookeeper
- export ZOOKEEPER_HOME=/opt/zookeeper-3.4.7
- export PATH=$PATH::$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
- 保存退出
- source /etc/profile
- 4.修改配置文件
- cp zoo_sample.cfg zoo.cfg
- vim zoo.cfg
- ####zoo.cfg####
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/opt/zookeeper-3.4.7/tmp/zookeeper (注意创建相关目录)
- clientPort=2181
- server.1=hadoop.master:2888:3888
- server.2=hadoop.slaver1:2888:3888
- server.3=hadoop.slaver2:2888:3888
- 参数说明:
- tickTime: zookeeper中使用的基本时间单位, 毫秒值.
- dataDir: 数据目录. 可以是任意目录.
- dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
- clientPort: 监听client连接的端口号.
- initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower.
- syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度.
- server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
- 5.分发到各个节点中
- scp -r /opt/zookeeper-3.4.7 hadoop@主机名:/opt
- 6.根据dataDir配置的目录下新建myid文件, 写入一个数字, 该数字表示这是第几号server
- cd /opt/zookeeper-3.4.7/tmp/zookeeper
- touch myid(如果是安装上述配置,则master为1 slaver1为2 slaver3)
- 7.常用命令
- ####启动/关闭/查看 zk#####
- zkServer.sh start //集群中每台主机执行一次
- zkServer.sh stop
- zkServer.sh status
- ####查看/删除节点信息####
- zkCli.sh
- ls /
- rmr /节点名称
- 6.安装hadoop(四台机子 master slaver1 slaver2 slaver3 其中namenode有master和slaver1)
- 1.下载安装包
- 2.解压安装包
- 3.配置环境变量
- #hadoop
- export HADOOP_HOME=/opt/hadoop-2.5.2
- export HADOOP_PREFIX=/opt/hadoop-2.5.2
- export HADOOP_COMMON_HOME=$HADOOP_HOME
- export HADOOP_MAPRED_HOME=$HADOOP_HOME
- export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
- export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
- export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/bin
- 保存退出
- source /etc/profile
- 4.修改配置文件
- 1.创建相关目录
- cd /opt/hadoop-2.5.2
- mkdir logs
- mkdir tmp
- 2.修改相关配置文件相关参数(core-site.xml/hadoop-env.sh/hdfs-site.xml/log4j.properties
- /mapred-env.sh/mapred-site.xml/masters/slaves/yarn-env.sh/yarn-site.xml)
- ####core-site.xml####
- <configuration>
- <!-- 指定hdfs的nameservice为namenode-->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://ns1:8020</value>
- </property>
- <!-- 指定hadoop块大小 -->
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <!-- 指定hadoop临时目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/opt/hadoop-2.5.2/tmp</value>
- <description>A base for other temporary directories.</description>
- </property>
- <!-- 指定zookeeper地址 -->
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>hadoop.master:2181,hadoop.slaver1:2181,hadoop.slaver2:2181</value>
- </property>
- </configuration>
- ####hadoop-env.sh####
- export JAVA_HOME=/usr/java/jdk1.8.0_65
- export HADOOP_CLASSPATH=.:$HADOOP_CLASSPATH:$HADOOP_HOME/bin
- export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/bin
- ####hdfs-site.xml####
- <configuration>
- <property>
- <name>dfs.namenode.http-address</name>
- <value>hadoop.master:50070</value>
- <description>The address and the base port where the dfs namenode web ui will listen on.</description>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>hadoop.slaver1:50070</value>
- </property>
- <property>
- <name>dfs.namenode.checkpoint.dir</name>
- <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>
- <final>true</final>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file://${hadoop.tmp.dir}/dfs/name</value>
- <final>true</final>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file://${hadoop.tmp.dir}/dfs/data</value>
- <final>true</final>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.permissions</name>
- <value>false</value>
- </property>
- <property>
- <name>dfs.permissions.enabled</name>
- <value>false</value>
- </property>
- <property>
- <name>dfs.namenode.hosts.exclude</name>
- <value>/opt/hadoop-2.5.2/other/excludes</value>
- <description>Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded.</description>
- </property>
- <property>
- <name>dfs.namenode.hosts</name>
- <value>/opt/hadoop-2.5.2/etc/hadoop/slaves</value>
- </property>
- <property>
- <name>dfs.blocksize</name>
- <value>134217728</value>
- </property>
- <!-- HBase configuration-->
- <property>
- <name>dfs.datanode.max.xcievers</name>
- <value>4096</value>
- </property>
- <!--Zookeeper configuration-->
- <property>
- <name>dfs.nameservices</name>
- <value>ns1</value>
- </property>
- <property>
- <name>dfs.ha.namenodes.ns1</name>
- <value>nn1,nn2</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.ns1.nn1</name>
- <value>hadoop.master:8020</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.ns1.nn2</name>
- <value>hadoop.slaver1:8020</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.ns1.nn1</name>
- <value>hadoop.master:50070</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.ns1.nn2</name>
- <value>hadoop.slaver1:50070</value>
- </property>
- <property>
- <name>dfs.namenode.servicerpc-address.ns1.nn1</name>
- <value>hadoop.master:53310</value>
- </property>
- <property>
- <name>dfs.namenode.servicerpc-address.ns1.nn2</name>
- <value>hadoop.slaver1:53310</value>
- </property>
- <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
- <property>
- <name>dfs.journalnode.edits.dir</name>
- <value>/opt/zookeeper-3.4.7/journal</value>
- </property>
- <property>
- <name>dfs.namenode.shared.edits.dir</name>
- <value>qjournal://hadoop.master:8485;hadoop.slaver1:8485;hadoop.slaver2:8485/ns1</value>
- </property>
- <!-- 开启NameNode失败自动切换 -->
- <property>
- <name>dfs.ha.automatic-failover.enabled</name>
- <value>true</value>
- </property>
- <!-- 配置失败自动切换实现方式 -->
- <property>
- <name>dfs.client.failover.proxy.provider.ns1</name>
- <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
- </property>
- <!-- 指定zookeeper地址 -->
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>hadoop.master:2181,hadoop.slaver1:2181,hadoop.slaver2:2181</value>
- </property>
- <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用-->
- <property>
- <name>dfs.ha.fencing.methods</name>
- <value>
- sshfence
- shell(/bin/true)
- </value>
- </property>
- <property>
- <name>dfs.ha.fencing.ssh.private-key-files</name>
- <value>/home/hadoop/.ssh/id_rsa</value>
- </property>
- <!-- 配置sshfence隔离机制超时时间 -->
- <property>
- <name>dfs.ha.fencing.ssh.connect-timeout</name>
- <value>30000</value>
- </property>
- </configuration>
- ####log4j.properties####
- hadoop.root.logger=INFO,console
- hadoop.log.dir=/opt/hadoop-2.5.2/logs
- hadoop.log.file=hadoop.log
- ####mapred-env.sh####
- export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
- export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
- ####mapred-site.xml####
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.application.classpath</name>
- <value>
- /opt/hadoop-2.5.2/etc/hadoop,
- /opt/hadoop-2.5.2/share/hadoop/common/*,
- /opt/hadoop-2.5.2/share/hadoop/common/lib/*,
- /opt/hadoop-2.5.2/share/hadoop/hdfs/*,
- /opt/hadoop-2.5.2/share/hadoop/hdfs/lib/*,
- /opt/hadoop-2.5.2/share/hadoop/mapreduce/*,
- /opt/hadoop-2.5.2/share/hadoop/mapreduce/lib/*,
- /opt/hadoop-2.5.2/share/hadoop/yarn/*,
- /opt/hadoop-2.5.2/share/hadoop/yarn/lib/*
- </value>
- </property>
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>hadoop.master:10020</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>hadoop.master:19888</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.done-dir</name>
- <value>/history/done</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.intermediate-done-dir</name>
- <value>/history/done_intermediate</value>
- </property>
- </configuration>
- ####masters####
- hadoop.slaver1 //存储secondary namenode节点主机名
- ####slaves####
- hadoop.slaver1
- hadoop.slaver2
- hadoop.slaver3
- ####yarn-env.sh####
- export JAVA_HOME=/usr/java/jdk1.8.0_65
- ####yarn-site.xml####
- <configuration>
- <!-- Site specific YARN configuration properties -->
- <property>
- <name>yarn.resourcemanager.address</name>
- <value>hadoop.master:18040</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>hadoop.master:18030</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>hadoop.master:18025</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address</name>
- <value>hadoop.master:18041</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>hadoop.master:8088</value>
- </property>
- <property>
- <name>yarn.nodemanager.local-dirs</name>
- <value>/opt/hadoop-2.5.2/other/mynode</value>
- </property>
- <property>
- <name>yarn.nodemanager.log-dirs</name>
- <value>/opt/hadoop-2.5.2/other/logs</value>
- </property>
- <property>
- <name>yarn.nodemanager.log.retain-seconds</name>
- <value>10800</value>
- </property>
- <property>
- <name>yarn.nodemanager.remote-app-log-dir</name>
- <value>/opt/hadoop-2.5.2/other/logs</value>
- </property>
- <property>
- <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
- <value>logs</value>
- </property>
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>-1</value>
- </property>
- <property>
- <name>yarn.log-aggregation.retain-check-interval-seconds</name>
- <value>-1</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!--zookeeper-->
- <property>
- <name>yarn.resourcemanager.ha.enabled</name>
- <value>true</value>
- </property>
- <property>
- <name>yarn.resourcemanager.cluster-id</name>
- <value>yrc</value>
- </property>
- <property>
- <name>yarn.resourcemanager.ha.rm-ids</name>
- <value>rm1,rm2</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname.rm1</name>
- <value>hadoop.master</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname.rm2</name>
- <value>hadoop.slaver1</value>
- </property>
- <property>
- <name>yarn.resourcemanager.zk-address</name>
- <value>hadoop.master:2181,hadoop.slaver1:2181,hadoop.slaver2:2181</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
- 5.分发到各个节点中
- scp -r /opt/hadoop-2.5.2 hadoop@hadoop.master:/opt
- 6.首次启动
- 6.1 启动zk
- zkServer.sh start(zk 各个节点执行)
- 6.2 启动journalnode
- hadoop-daemon.sh start journalnode(zk 各个节点执行)
- 6.3 格式化Namenode
- hadoop namenode -format(namenode 节点运行 注意是hadoop 不是hdfs)
- 6.4 启动Namenode
- hadoop-daemon.sh start namenode(namenode 节点运行)
- 6.5 格式化另一个Namenode
- hadoop namenode -bootstrapStandby(在secondary namenode节点运行)
- 6.6 格式化zk
- hdfs zkfc -formatZK (namenode节点执行)
- 6.7 将所有的服务停止
- stop-all.sh
- 注意此时需在每个zk节点执行 zkServer.sh stop
- 7.正常启动
- 1.启动zk
- zkServer.sh start(zk 各个节点执行)
- 2.启动所有服务
- start-all.sh //或者先执行start-dfs.sh 再执行start-yarn.sh
- 3.启动后台历史服务
- mr-jobhistory-daemon.sh start historyserver(在namenode节点执行即可)
- 4.启动备份resourcemanger
- yarn-daemon.sh start resourcemanager //在备份节点运行
- 5.启动备份namenode
- hadoop-daemon.sh start namenode //在备份节点运行
- 8.验证
- 1.jps验证 查看相关进程
- 2.web验证
- hdfs 主机名:50070
- yarn 主机名:8088
- history 主机名:19888
- //以上主机名均指 namenode节点主机名 (此时namenode节点是active状态)
- 3.查看active状态
- hdfs web查看 有active状态和stangby状态两种
- yarn shell命令查看
- yarn rmadmin -getServiceState rm1(或者rm2)
- //其中rm1/rm2为配置文件中配置的名称
- 4.kill当前active的namenode 看能不自己切换到standby namenode上
- 9.常见命令
- ####启动/关闭yarn jobhistory记录####
- web: //namenode:19888 //其中namenode 为集群任意节点主机名
- mr-jobhistory-daemon.sh start historyserver //集群中每台主机执行一次
- mr-jobhistory-daemon.sh stop historyserver
- ####启动/关闭/查看 zk#####
- zkServer.sh start //集群中每台主机执行一次
- zkServer.sh stop
- zkServer.sh status
- ####启动/关闭/查看 yarn####
- yarn-daemon.sh start resourcemanager
- yarn-daemon.sh stop resourcemanager
- yarn-daemon.sh stop nodemanager
- yarn rmadmin -getServiceState rm2 //其中rm2是集群配置的别名
- web: //namenode:8088 //其中namenode是active状态的主机名
- ####启动/关闭/查看 hadoop####
- hadoop-daemon.sh start namenode
- hadoop-daemon.sh stop namenode
- hadoop-daemon.sh stop datanode
- web: //namenode:50070 //其中namenode是active状态的主机名
- ####格式化zkNode####
- hdfs zkfc -formatZK //namenode节点执行 注意是hdfs 不是hadoop
- ####启动/关闭zkNode#####
- hadoop-daemon.sh start zkfc
- hadoop-daemon.sh stop zkfc
- ####查看/删除job####
- hadoop job -list
- hadoop job -kill 任务ID //注意不是applicationID
- ####初始化Journal Storage Directory####
- hdfs namenode -initializeSharedEdits //非ha转成ha时执行 如果一开始已经是ha了无需执行
- ####初始化namenode####
- hadoop namenode -format //namenode端执行
- hdfs namenode -bootstrapStandby //secend namenode端执行 执行前需保证namenode已经启动
- 10.常见异常
- 1.Journal Storage Directory /opt/zookeeper-3.4.7/journal/ns1 not formatted
- 原因:由于之前hadoop没部署ha,改成ha后形成错误
- 解决办法:
- 1.将配置文件hdfs-site.xml中dfs.journalnode.edits.dir对应的目录删除
- 2.hdfs namenode -initializeSharedEdits(namenode 执行)
- 2.datanode起来了,namenode起不来
- 解决办法:
- 1.查看配置文件相关配置项是否配置正确
- 2.查看环境变量是否配置正确
- 3.查看主机网络映射是否配置正确
- 4.是否二次格式化namenode 如果是,则需要将datanode 的clusterID和namespaceID改成namenode一致
- 目录一般是tmp目录下
- 5.重启hdfs
- 6.如果执行上述还不行,则在hadoop服务运行状态下将tmp目录下所有文件夹删除,再格式化,重启服务
- 3.两个namenode起来了,但都是standby状态
- 解决办法:
- 1.是否均启动zk
- 2.格式化zfkc
- hdfs zkfc -formatZK
- 3.所有服务重启(含zk)
安装hadoop+zookeeper ha的更多相关文章
- hadoop+zookeeper(ha架构搭建)
http://blog.csdn.net/baidu_25820069/article/details/52225293 [条件所限,待验证]
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- Hadoop分布式HA的安装部署
Hadoop分布式HA的安装部署 前言 单机版的Hadoop环境只有一个namenode,一般namenode出现问题,整个系统也就无法使用,所以高可用主要指的是namenode的高可用,即存在两个n ...
- 通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置
通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置 配置H ...
- ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集群
Hadoop HA 原理概述 为什么会有 hadoop HA 机制呢? HA:High Available,高可用 在Hadoop 2.0之前,在HDFS 集群中NameNode 存在单点故障 (SP ...
- HA分布式集群一hadoop+zookeeper
一:HA分布式配置的优势: 1,防止由于一台namenode挂掉,集群失败的情形 2,适合工业生产的需求 二:HA安装步骤: 1,安装虚拟机 1,型号:VMware_workstation_full_ ...
- Apache Hadoop集群安装(NameNode HA + SPARK + 机架感知)
1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 ).HA的集 ...
- Apache Hadoop集群安装(NameNode HA + YARN HA + SPARK + 机架感知)
1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 192.16 ...
- Hadoop zookeeper hbase spark phoenix (HA)搭建过程
环境介绍: 系统:centos7 软件包: apache-phoenix-4.14.0-HBase-1.4-bin.tar.gz 下载链接:http://mirror.bit.edu.cn/apac ...
随机推荐
- 三种执行SQL语句的的JAVA代码
问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...
- Comet技术
1.Comet是什么? 维基百科: Comet是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流. 说白了就是web ...
- SQL 从指定表筛选指定行信息 获取表行数
1.获取指定表的行数 --获取表中数据行数 --select max([列名]) from 表名 2.筛选指定表的指定行数据(数据表分页获取) http://www.cnblogs.com/morni ...
- 【bzoj1231】[Usaco2008 Nov]mixup2 混乱的奶牛
题目描述 混乱的奶牛[Don Piele, 2007]Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= ...
- 对于C语言复杂指针类型的分析
转载自:http://www.slyar.com/blog/complicated-point-type.html int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个 ...
- Stm32F107VCT6硬件资源
一直在用stm32系列的单片机,最近因为需要使用到以太网,所以采用了stm32f107vc这款芯片.对于存储资源一直不是非常清楚,今天专门到官网看了一下. 如下: RAM------>64kB ...
- web自动化工具-liveStyle
web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...
- 高程(4):执行环境、作用域、上下文执行过程、垃圾收集、try...catch...
高程三 4.2.4.3 一.执行环境 1.全局执行环境是最外层的执行环境. 2.每个函数都有自己的执行环境,执行函数时,函数环境就会被推入一个当前环境栈中,执行完毕,栈将其环境弹出,把控制器返回给之前 ...
- Linux SVN 命令详解
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- POJ 2226二分图最大匹配
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...