程序很简单,但是有些小细节:
1、sizeof(data):取到的是字节数,还要除以4才能得出元素个数。。
2、设置变量min记录数组下标,而不要频繁的交换。。
各种排序陆续送上。。
今天在做气象数据分析小实验的时候,把Xen的基本操作又重新温故了一边,现在介绍一下Xen的基本操作(ps:关于Xen的搭建以及更详细的东东,以后会陆续奉上的):
PS:一下所有的操作都是在root下进行的
1、创建虚拟机:后面的配置文件根据自己的情况而定,创建了一台dom01的虚拟机
xm create -c /home/nodes/dom01/archlinux.cfg
2、查看已经创建了的虚拟机:
xm list
3、登陆创建的虚拟机:名字根据自己的情况而定
xm console node1dom01
然后输入用户密码即可操作
4、关闭虚拟机:在此提供两种方法
一、在登陆的状态下,直接shutdown即可(推荐)
二、在主控机器上,通过远程ssh,然后shutdown关闭
三、在主控机器上,xm destroy name(根据情况而定)
PS:在此只提供最基本的操作,当然还有暂停,激活系统,调整虚拟系统所占内存大小等等。。以后用到再详述。。
几个月前就配置好了hadoop的集群,但是其中Rss密钥的问题一直不太清除,今天看了篇文章,大概知道了它的原理,分享以下。。
把公钥放在跑sshd服务的机器上,也就是:cp id_rsa.pub authorized_keys。。然后客户机上放专有密钥,ssh连接的原理是:一把专用密钥能够解锁与它相匹配的公钥,下面是连接的过程:
1、客户机发起连接 ssh user@ip。
2、sshd生成一个随机数,用公钥加密,发给客户机。
3、客户机收到这个加密数,用专用密钥解密,解密出来的随机数发给sshd。
4、sshd发现这个正确,于是同意无密码连接。
5、登录成功。
MapReduce的核心是shuffle,她对于mapreduce的效率起到了至关重要的作用,now,我把我对shuffle的理解过程简单介绍一下,如果有误还请指教阿。。
MapReduce的过程(针对一个map来说):
每个Map在内存中都有一个缓存区,map的输出结果会先放到这个缓冲区当中,缓冲区有一个spill percent,这里默认是80%(可以手动进行配置),也就是说当输出到缓冲区中的内容达到80%时,就会进行spill(溢出),溢出到磁盘的一个临时文件中,也就是说这80%的内容成为一个临时文件,这里还涉及到了一个partition的概念,一个临时文件里面是进行了分区的,并且分区的数量由reduce的数量决定,即不同的分区内容传给不同的reduce。当这80%的内容在溢出时,map会继续向那20%的缓冲中输出。插入一点,在缓冲区溢出到磁盘之前,会进行sort和combiner,然后才会写道磁盘中。这两个步骤很重要,尤其是combiner,它直接决定了MapReduce的效率。并且sort和combiner这两个处理发生在在shuffle的整个过程中。这样一个map执行下来,就会在磁盘上存储几个临时文件,然后会对这几个临时文件进行一个merge,合并程一个文件,这个文件中有n个partition,n是reduce的数量。说明一下:这些临时文件和合并的文件都是在本地文件系统上存储的。
每个Map输出这样一个文件,最后不同Map生成的文件按照不同的partition传给不同的reduce,然后reduce直接把结果输出到HDFS文件系统上了。
这个是官方的一个图:
有人认为这个图有问题,但在我个人开来,这个图描述的没有问题,如果认为确实有问题的还请指教阿。。
简单说一下combiner的一个很重要的作用:combiner会对相同key的值进行合并,比如<a,1><a,1><a,1>,combiner过后合并成<a,3>,即减少了数据量,那末传向reduce的数据量就减少了,进而提高了效率。。
今天写了一个qq间的UDP套接字通信,感觉UDP的要简单些,分享一下:
代码如下:
1、客户端
今天写了一个简单的守护进程,算是网络编程入一下门吧
首先还是把创建守护进程的步骤写一下(5步):
1、fork()调用,创建子进程,父进程退出(这样是子进程成为一个orphan progress,进而由init进程托管)
2、调用setsid(),创建一个新的进程组,新的会话组,担任该会话组的组长,并脱离终端。(此处有疑问,还请高手解释)
3、改变当前目录的根目录,chdir();
4、重设文件权限掩码,umask(0);
5、关闭不在需要的文件描述符,close()。
接下来是代码部分:
c中产生随机数可以结合srand()和rand()两个函数,这两个函数都是在标准库 stdlib.h 中。
srand()函数可以初始化种子,种子的概念在此简单说一下,产生一个随机数要有一个最开始的值,然后随机数就是根据这个值算出来的,这个原始的值就是种子,所以只要我们的种子不同,产生的随机数就不同。因此我们一般以当前时间作为种子。具体用法如下:
1 开机进入安全模式,然后修改用户密码即可。
2 开机进入系统到选择用户界面时,按Ctrl+alt+delete, 进入管理员用户登陆界面,用户输入administrator, 密码一般为空。 然后进入系统,即可修改 用户密码。