Hadoop 单机安装
Hadoop 单机安装Hadoop 启动模式Hadoop 集群有三种启动模式:
单机模式:默认情况下运行为一个单独机器上的独立 Java 进程,主要用于调试环境
伪分布模式:在单个机器上模拟成分布式多节点环境,每一个 Hadoop 守护进程都作为一个独立的 Java 进程运行
完全分布式模式:真实的生产环境,搭建在完全分布式的集群环境
用户及用户组需要添加用来运行Hadoop 进程的用户组 Hadoop 及用户 Hadoop
注意:没有linux 环境可以使用docker
可以使用下面的命令来查看已经创建好的 hadoop 用户和 uid 与 gid
1$ id hadoop
另外在 /etc/passwd 文件中也记录了用户的信息,使用下面的命令查看:
1$ tail -5 /etc/passwd
添加用户及用户组的步骤如下:
创建用户 Hadoop
1$ sudo adduser hadoop
请按照提示输入 hadoop 用户的密码,例如密码设定为 hadoop 。
将 hadoop 用户添加进 sudo 用户组
1$ sudo use ...
hadoop-了解什么是hadoop
了解Hadoop
Hadoop 简介
开源
Apache Hadoop 是一款支持数据密集型分布式应用并以 Apache 2.0 许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。
源于 MapReduceHadoop 是根据 Google 公司发表的 MapReduce 和 Google 档案系统的论文自行实作而成。
提供可靠性和数据移动Hadoop 框架透明地为应用提供可靠性和数据移动。它实现了名为 MapReduce 的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。
分布式文件系统此外,Hadoop 还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce 和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和 PB 级的数据。
Hadoop 平台现在普遍认为整个 Apache Hadoop “平台” 包括 Hadoop 内核、MapReduce、Hadoop 分布式文件系统(HDFS)以及一些 ...
国外VPS搭建SSR多用户教程[中文一键安装管理]
国外VPS搭建SSR多用户教程[中文一键安装管理]
首先一切的基础都建立在你有一台 [非大陆]的 VPS ,拥有基础服务器知识(例如连接服务器)
如果你想多用户使用,可以使用不同的端口来控制。所以,本文的SSR多用户搭建就是在一个VPS下面分别设置多个SSR账号,相同的IP地址,不同的端口和SSR密码。
本文也适用任何可用的国外VPS搭建SS/SSR,可以搭建SS多用户也可以搭建SSR多用户。
第一步 连接服务器登录服务器,远程连接你的服务器(或者VPS)
第二步 安装管理在命令行内输入下列命令 :(该脚本适用于Centos。其他系统没有测试,如果你的系统非Centos,可以使用Docker 具体使用方法,本文不作任何阐述)
12yum -y install wgetwget -N --no-check-certificate https://raw.githubusercontent.com/CecilWu/SSR-Chinese/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh
...
Scala 类和对象(二)
Scala 类和对象(二)本章知识点概括
类的定义规范
定义类
前提条件检查
添加成员变量
自身引用
辅助构造函数
私有成员变量和方法
定义运算符
标识符
方法重载
隐式类型转换
Rational 类的定义规范首先,我们回忆下有理数的定义:一个有理数(rational)可以表示成分数形式: n/d , 其中 n 和 d 都是整数( d 不可以为 0 ),*n*** 称为分子(numerator),*d*** 为分母(denominator)。和浮点数相比,有理数可以精确表达一个分数,而不会有误差。
因此我们定义的 Rational 类支持上面的有理数的定义。支持有理数的加减乘除,并支持有理数的规范表示,比如 2/10 ,其规范表示为 1/5 。分子和分母的最小公倍数为 1 。
有了有理数定义的实现规范,我们可以开始设计类 Rational 。一个好的起点是考虑用户如何使用这个类,我们已经决定使用 “Immutable” 方式来使用 Rational 对象,我们需要用户在定义 Rational 对象时提供分子和分母。因此我们可以开始定 ...
Scala 类和对象 (一)
Scala 类和对象 (一)类和对象的定义首先介绍Scala的类定义,我们以一个简单的例子开始,创建一个计算整数累计校验和类 ChecksumAccumulator
12345class ChecksumAccumulator { private var sum=0; def add(b:Byte) :Unit = sum+=b def Checksum() : Int = ~ (sum & 0xFF) + 1}
可以看到Scala类定义和Java非常类似,也是以 class 开始,和Java 不同的,Scala的缺省修饰符为 public, 也就是如果不带有访问范围的修饰符 public、protected、private等,Scala将默认定义为 public。 类的方法以 def定义开始,要注意的是Scala的方法的参数都是 val 类型,而不是 var 类型, 因此在函数体内不可以修改参数的值,比如:如果你修改 add 方法如下:
1234def add(b:Byte) :Unit = { b=1; ...
Scala 基本数据类型
Scala 基本数据类型基本数据类型简介如果你是个Java 程序员,你会发现 Java 支持的基本数据类型,Scala都有对应的支持,不过Scala的数据类型都是对象(比如整数),这些基本类型都可以通过隐式自动转换的形式支持比 Java 基本数据类型更多的方法。
隐式自动转换的概念将在后面介绍,简单的说就是可以为基本类型提供扩展,比如如果调用 (-1).abs() , Scala 发现基本类型Int没有提供 abs() 方法,但可以发现系统提供了从 Int 类型转换为 RichInt 的隐式自动转换,而 RichInt 具有 abs() 方法, 那么Scala就自动将 1 转换为 RichInt 类型, 然后调用 RichInt 的 abs 方法。
Scala 的基本数据类型有: Byte、Short、Int、Long 和 char (这些称为整数类型)。 整数类型加上 Float 和 Double 称为数值类型。 此外还有 String 类型,除 String 类型在 java.lang 包中定义,其他的类型都定义在包 scala 中。 比如 Int 的全名为 scala.I ...
开始学习Scala
开始学习Scala
老规矩,请您先自行安装 Scala
开始使用 Scala 的最简单的方式是使用交互式 Scala 解释器,只要输入 Scala 表达式, Scala 解释器会立即解释执行该语句并输出结果。当然你也可以使用如 Scala IDE 或 IntelliJ IDEA 集成开发环境。不过本教程开始还是以这种交互式 Scala 解释器为主。
开始使用 Scala 的最简单的方式是使用交互式 Scala 解释器,只要输入 Scala 表达式, Scala 解释器会立即解释执行该语句并输出结果。当然你也可以使用如 Scala IDE 或 IntelliJ IDEA 集成开发环境。不过本教程开始还是以这种交互式 Scala 解释器为主。
你可以使用 :help 命令列出一些常用的 Scala 解释器命令
退出Scala解释器,输入:
1:quit
使用表达式在 scala > 提示符下,你可以输入任意的Scala表达式,比如输入 1+2 ,解释器显示:
11+2
输入上面的表达式 结果显示包括:
一个由Scala解释器自动生成的变量名或者由你指定的变 ...
Scala 控制语句
Scala 控制语句Scala 的所有控制结构都有返回结果,如果你使用过 Java 或 C#, 就可能了解 Java 提供的三元运算符 ?: ,它的基本功能和 if 一样,都可以返回结果。 Scala在此基础上所有控制结构( while、*try**、if***等) 都可以返回结果。这样做的一个好处是,可以简化代码,如果没有这种特点,程序员常常需要创建一个临时变量用来保存结果
总的来说,Scala提供的基本程序控制结构,”麻雀虽小,五脏俱全”,虽然少,但足够满足其他指令式语言(如 Java,C++)所支持的程序控制功能。而且,由于这些指令都有返回结果,可以使得代码更为精简。
if 表达式Scala 语言的 if 的基本功能和其他语言没有什么不同,它根据条件执行两个不同的分支。比如,使用Java风格编写下面Scala的if语句的一个例子
123456789var age = 25var result = ""if (age > 20){ result = "worker"}else{ re ...
开启Scala编程
开启Scala编程
首先 需要安装 Scala 软件 进入scale 终端
Hello World每次使用开发的时候 必定输出 Hello World
代码:
12345object HelloWorld { def main(args: Array[String]) { println("Hello, world!") }}
如果一行中的代码太长,可以在该行最后以 Shift键+Enter键 进行换行即可。输入上述代码后,显示如下图所示:
如果一行中的代码太长,可以在该行最后以 Shift键+Enter键 进行换行即可。输入上述代码后,显示如下图所示:
这段代码,你可以使用命令行交互式执行:
1HelloWorld.main(null)
参考链接
百度百科 - Scala
Redis 持久化机制
Redis 持久化机制内存和磁盘的区别除了速度差别以外,还有就是内存中的数据会在重启之后消失,持久化的作用就是要将这些数据长久存到磁盘中以支持长久使用。
Redis 是一个支持持久化的内存数据库,Redis 需要经常将内存中的数据同步到磁盘来保证持久化。
Redis 支持两种持久化方式:
snapshotting(快照):将数据存放到文件里,默认方式。
是将内存中的数据以快照的方式写入到二进制文件中,默认文件 dump.rdb,可以通过配置设置自动做快照持久化的方式。可配置 Redis 在 n 秒内如果超过 m 个 key 被修改就自动保存快照。比如:
save 900 1:900 秒内如果超过 1 个 key 被修改,则发起快照保存。
save 300 10:300 秒内如果超过 10 个 key 被修改,则快照保存。
Append-only file(缩写为 aof):将读写操作存放到文件中。
由于快照方式在一定间隔时间做一次,所以如果 Redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改。
aof 比快照方式有更好的持久 ...
Redis 主从复制
Redis 主从复制为了分担服务器压力,会在特定情况下部署多台服务器分别用于缓存的读和写操作,用于写操作的服务器称为主服务器,用于读操作的服务器称为从服务器。
从服务器通过 psync 操作同步主服务器的写操作,并按照一定的时间间隔更新主服务器上新写入的内容。
Redis 主从复制的过程:
Slave 与 Master 建立连接,发送 psync 同步命令。
Master 会启动一个后台进程,将数据库快照保存到文件中,同时 Master 主进程会开始收集新的写命令并缓存。
后台完成保存后,就将此文件发送给 Slave。
Slave 将此文件保存到磁盘上。
Redis 主从复制特点
可以拥有多个 Slave。
多个 Slave 可以连接同一个 Master 外,还可以连接到其它的 Slave。(当 Master 宕机后,相连的 Slave 转变为 Master)。
主从复制不会阻塞 Master,在同步数据时, Master 可以继续处理 Client 请求。
提高了系统的可伸缩性。
从服务器的主要作用是响应客户端的数据请求,比如返回一篇博客信息。
上面说 ...
Redis 事务处理
Redis 事务处理Redis 的事务处理比较简单。只能保证 client 发起的事务中的命令可以连续的执行,而且不会插入其它的 client 命令,当一个 client 在连接中发出 multi 命令时,这个连接就进入一个事务的上下文,该连接后续的命令不会执行,而是存放到一个队列中,当执行 exec 命令时,redis 会顺序的执行队列中的所有命令。
12345> multi> set name a> set name b> exec> get name
需要注意的是,redis 对于事务的处理方式比较特殊,它不会在事务过程中出错时恢复到之前的状态,这在实际应用中导致我们不能依赖 redis 的事务来保证数据一致性。
Redis 简介与安装
Redis 简介与安装Redis 是什么REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统。Redis 提供了一些丰富的数据结构,包括 lists、sets、ordered sets 以及 hashes ,当然还有和 Memcached 一样的 strings 结构。Redis 当然还包括了对这些数据结构的丰富操作。
Redis 常被称作是一款数据结构服务器(data structure server)。Redis 的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。
对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。
Redis 的优点
性能极高:Redis 能支持超过 100K+ 每秒的读写频率。
丰富的数据类型:Redis 支持二进制案例的 Strings,List ...
Redis 虚拟内存的使用
Redis 虚拟内存的使用虚拟内存管理在 2.6 及之上版本取消了,取消了是指这部分内容在后面的版本会由 redis 软件自身管理,在本实验中,选择的是 4.0.9 版本的 redis,所以实验中的配置文件没有虚拟内存管理功能的配置选项,此处仅为讲解。
Redis 的虚拟内存是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出内存空间用于其它的访问数据,尤其对于 redis 这样的内存数据库,内存总是不够用的。除了分隔到多个 redis server 外,提高数据库容量的方法就是使用虚拟内存,把那些不常访问的数据交换到磁盘上。
通过配置 vm 相关的 redis.config 配置:
1234567891011121314151617# 开启 vm 功能vm-enable yes# 交换出来的 value 保存的文件路径vm-swap-file /tmp/redis.swap# redis 使用的最大内存上限vm-max-memory 10000000# 每个页面的大小 32 字节vm-page-size 32# 最多使用多少个页面vm-pages 123217729# 用 ...
Java 基础学习记录
Java 基础学习记录
所有相关 java 文章的记录均为网上教程学习记录
参考网站
以下网站不分排名
待补充