记得“李笑来”曾经说过一句话,互联网时代,大多数公司的服务都是部署在Linux上面,如果一个大学生,努力学习熟练掌握Linux命令操作,在IT行业肯定能找到一份好工作。
这两天看阮一峰老师的博客,他推荐这本“UNIX Tutorial for Beginners”给不熟悉UNIX或Linux操作的朋友。我读了一下,刷新了很多对UNIX和Liunx命令操作的认知。下面是我为读过的章节写的笔记,都是一些我以前不曾了解或认知有误的地方。欢迎大家指正。
记得“李笑来”曾经说过一句话,互联网时代,大多数公司的服务都是部署在Linux上面,如果一个大学生,努力学习熟练掌握Linux命令操作,在IT行业肯定能找到一份好工作。
这两天看阮一峰老师的博客,他推荐这本“UNIX Tutorial for Beginners”给不熟悉UNIX或Linux操作的朋友。我读了一下,刷新了很多对UNIX和Liunx命令操作的认知。下面是我为读过的章节写的笔记,都是一些我以前不曾了解或认知有误的地方。欢迎大家指正。
Ubuntu系统稳定性有点差,今天清理空间后,重新启动无法进入图形界面。考虑到稳定性还有我的MBP磁盘空间不够大,决定在本机搭建Hadoop3.1.0环境。
由于网上,同类型的安装教程很多,我就不去东施效颦,我只把我安装过程中参考的帖子和遇到的异常问题记录下来,以下是全部内容。
Hadoop官方在3.0.0及以后的版本里将一些默认的端口号进行了修改。Issue见这里。
Namenode ports: 50470 –> 9871, 50070 –> 9870, 8020 –> 9820
Secondary NN ports: 50091 –> 9869, 50090 –> 9868
Datanode ports: 50020 –> 9867, 50010 –> 9866, 50475 –> 9865, 50075 –> 9864
参考资料:
这两天因工作需要,需要搭建一套Hadoop集群环境。
参照各种帖子,折腾2天,算把Hadoop环境配置起来。中间踩了无数坑,单机模式和伪分布模式(不开启Yarn服务)下WordCount测试都能够成功;集群环境暂时还没配好,随后开始布置。
在这个学习过程中,看到几篇写得不错的技术帖,统一收集整理在此。
PS:Ubuntu16.04下面发现阿里云的源有好几个网址存在问题,换用中科大的源,明显感觉稳定很多。
参考资料:
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
|
|
More info: Writing
|
|
More info: Server
|
|
More info: Generating
|
|
More info: Deployment
最近遇到一个问题,在我的博客上点击“DataFrame”标签,程序跳转到“腾讯公益失踪儿童”页面,而不是预期的文章列表页面。
起初以为这是一个个例,但一番检查之后,发现一共有8个标签(下图红色方框标出)存在这个问题。
半年前写过一个爬虫程序,用MongoDB作为持久化工具。今天把之前的爬虫程序整理一番,发现对MongoDB的操作有点生疏,在此做一个整理。
本文只讲解macOS系统下MongoDB的使用方式,版本号是v4.2.8,不涉及Windows或Linux系统,如果存在偏差,请自行查阅相关文档。
我们知道,mongodb启动的命令是mongod
,它有两种方式启动,一是命令行带参数,二是配置文件方式。用命令行带参数启动方式比较简单省事,甚至你直接在终端里输入mongod
就可以启动MongoDB服务(注意,这种方式启动成功的前提是已经创建好/data/db
目录,并且设置成功相应的权限,/data/db
目录是MongoDB默认存放数据的地方,就和MySQL一样数据库里每一条记录最终会存储在硬盘的某一个文件夹下面一样(在MySQL shell里输入show variables like '%datadir%'
即可查看数据库对应文件夹的位置);只不过MongoDB需要自己先定义好)。
一般情况下,都应该使用指定配置文件方式启动。
命令行方式启动
这种方式就是启动的时候不用配置文件,配置文件里的配置项都直接写在命令行上。
mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/log/mongodb.log
命令行方式比较繁琐,而且需要手动敲一长串参数文件,不常用。
配置文件方式启动
将默认启动参数以yaml文件格式写到一个配置文件里。使用mongod -f /XXX/mongod.conf
方式启动。
下面便是我使用的配置文件,路径我选择使用/usr/local/mongodb/etc/mongod.conf
。
|
|
启动命令:
|
|
如果启动成功,在浏览器打开http://localhost:27017 ,能看到以下提示信息。
|
|
上面使用单机(Standalone)模式启动MongoDB,实际生产环境中,单机模式面临着很大的风险,一旦数据库服务出现问题,就会导致线上服务出现异常甚至崩溃,我们需要对MongoDB做相应的主备处理,提高数据库服务的可用性。这就是复制集(Replica Set)模式。
Replica Set是一堆mongod实例集合,它们有着同样的数据内容,包含三类角色:
注意,一个自动failover的Replica Set节点数必须为奇数,目的是选举投票的时候要有一个大多数才能进行选主决策。
贴两张图展示一下复制集模式,详细介绍请自行搜索查阅。
复制集模式,需要分别启动3个独立的mongod
服务,我创建了一个新文件夹replicaset用于存放3个节点的数据,如下所示。
在/var/run
目录下创建replicaset文件夹,在里面存放3个节点各自对应的PID文件。
下面列出其中一个节点rs0的配置文件信息,rs1和rs2参照rs0配置即可,端口号依次用27017、27018、27019。
|
|
打开终端,依次执行下面3条命令,即启动了3个mongod后台服务。
mongod -f /usr/local/mongodb/replicaset/rs0/etc/mongod.conf
mongod -f /usr/local/mongodb/replicaset/rs1/etc/mongod.conf
mongod -f /usr/local/mongodb/replicaset/rs2/etc/mongod.conf
在终端输入mongo(不指定节点IP地址和端口号,默认等同于输入mongo 127.0.0.1:27017),输入rs.status()
命令,可以看到replset当前没有初始化。
|
|
整理如下replset配置信息,执行rs.initiate(conf)
命令,返回{ "ok" : 1 }
表示节点部署成功。
|
|
部署成功后,会自动选举一个Primay节点。
输入rs.status()
查看状态(我用......
省略掉无效内容),可以看到members数组里有三个成员,stateStr
代表节点的类型;health
代表节点的状态,1表示健康;注意看27018和27019两个节点里有syncingTo
这个参数,表示它们与27017保持同步。
|
|
注意:
如果以上部署不成功,将3个节点dbPath
文件夹下面的内容清空重新部署即可。
上述操作都在27017这个节点的mongo
这个shell里完成。
如果第一次只部署一个节点,第一个节点会默认设置为Primary节点;后续再添加的节点,会自动成为Secondary节点。
|
|
登录一个mongo终端
(默认使用27017),执行rs.initiate(conf)
成功后。
|
|
再依次执行rs.add("127.0.0.1:27018")
和rs.add("127.0.0.1:27019")
将另外两个节点加入rstest
这个复制集,也可以得到和上面相同的结果。
进入Primary节点,写入数据:
|
|
进入Secondary节点,查看数据:
|
|
MongoDB连接字符串:
对于单机模式下的数据库连接,使用mongo://127.0.0.1:27017/test
进行连接;
对于复制集模式,除了上面的方式外,也可以使用
mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/test?replicaSet=rstest
进行连接。
|
|
测试代码如下:
|
|
关闭方法:
使用./mongo进入shell控制台,输入use admin,然后输入db.shutdownServer()关闭服务。
直接kill进程号
参考资料: