Linux常用软件(更新ing)

是的=-=我又来挖坑了。。争取慢慢填233333

本文记录Ubuntu Linux下比较好用的软件
软件大部分可以通过apt-get install命令安装,如果你在校内,建议更换清华源(参考基本配置:http://blog.hylstudio.cn/archives/452),如果在校外可以用网易源。

之前还几篇可以参考。。之后会写的更详细的=-=嗯,相信我,一定会写的

 

Linux常用命令备忘录(更新ing)

 

Linux笔记1(Linux运维、大数据相关工具)

Linux笔记2(Linux运维、大数据相关工具)

XShell
远程终端,可以同步操作N个终端,在懒得写ansible的时候简直是神器

git
先继续挖坑23333之后再说
可以参考廖雪峰教程http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

tree
可以显示指定目录结构的工具
常用命令:tree .

ansible
可以批量操作多个远程电脑,批量部署、自动化运维必备
批量执行命令:ansible all -a 'date'
批量分发文件:ansible -m copy -a 'src=/tmp/file1 dest=/tmp/file1'

fish
漂亮、方便的终端,比bash智能、颜值高
进入终端:fish

tmux
长时间脚本执行的神器(学长说screen也行,然而我没试过)
常用操作命令:
进入tmux:tmux
让tmux在后台运行:先按Ctrl+B,再按d
回到后台运行的tmux:tmux attach
tmux内新建一个窗口:先按Ctrl+B,再按c
切换窗口:先按Ctrl+B,再按对应的窗口编号
关闭当前窗口:先按Ctrl+B,再按&符号(Shift + 7)
滚动查看之前的输出:先按Ctrl+B,再按[(左方括号)
退出滚动模式:在滚动模式下按q

参考:http://www.kancloud.cn/kancloud/tmux/62459

make
make做构建工具的神器
参考:http://blog.csdn.net/ruglcc/article/details/7814546/
http://blog.csdn.net/liang13664759/article/details/1771246

 

 
supervisor
后台控制程序
参考
http://www.supervisord.org/

 

CDH5使用准备

前言

本次搭建CDH主要用于edX的数据分析,用于安装pipeline加快运算速度。

架构设计

3+N结构,3台主机负责HDFS主节点、CDH自身服务、YARN的ResourceManager等主要服务。 其他N台负责HDFS的NameNode和YARN的NodeManager,承担计算任务。现初步设计为6台、即3+3

硬件配置

主节点

CPU:双核E5*4
内存:16G

工作节点

CPU :双核E5*4
内存:16G

操作系统

Ubuntu 14.04 64位

准备工作

hostname、hosts

每台hostname统一前缀,我写的是hadoop。域名有dns的情况下使用dns更方便。
sudo vim /etc/hostname
sudo vim /etc/hosts

127.0.0.1 localhost
IP1 hadoop1.xxx.cn hadoop1
IP2 hadoop2.xxx.cn hadoop2
IP3 hadoop3.xxx.cn hadoop3
IP4 hadoop4.xxx.cn hadoop4
IP5 hadoop5.xxx.cn hadoop5
IP6 hadoop6.xxx.cn hadoop6

关闭防火墙

sudo ufw disable
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sudo apt-get remove iptables

配置网络

sudo vim /etc/sysctl.conf

在最后添加
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
vm.swappiness = 10

然后运行sudo sysctl -p

配置CDH库

安装Apache
sudo apt-get install apache2

从官网下载CDH的库并解压到/var/www/html/cm
从官网下载CDH的parcels并解压到/var/www/html/CDH

配置ssh

切换到root下生成密钥和公钥并添加信任
sudo su
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

添加本地库

sudo vim /etc/apt/sources.list.d/my-private-cloudera-repo.list
添加以下内容

deb [arch=amd64] http://这里替换IP/cm trusty-cm5.0.0 contrib
deb [arch=amd64] http://这里替换IP/cm trusty-cm5.7.0 contrib
deb [arch=amd64] http://这里替换IP/cm trusty-cm5.7 contrib

添加信任
curl -s http://这里替换IP/cm/archive.key | sudo apt-key add -

下载安装程序开始安装

wget https://archive.cloudera.com/cm5/installer/latest/cloudera-manager-installer.bin
sudo chmod u+x ./cloudera-manager-installer.bin
sudo ./cloudera-manager-installer.bin --skip_repo_package=1

如果报错查看/var/log下的错误日志

初始化集群

访问http://这里替换IP:7180执行安装向导
安装成功后即可开始使用

扩展集群

为了方便其他学校使用,遂制作了单节点镜像、安装了所有最基本的CDH角色。内存要求32G、CPU要求8核以上。镜像中已经做完了之前说的所有工作,可直接使用。
扩展节点时裸机要求和之前写的一样、做到下载安装程序之前就可以了(也要给root添加公钥信任),之后通过主节点添加角色实例即可。在主节点的apt缓存中有下载好的5.7.0所有安装包,可直接拷贝加快安装速度。路径:/var/cache/apt/archives

es分词引擎

计科的同学做实验如果需要分词可以试用下这个分词引擎。

github地址https://github.com/huaban/elasticsearch-analysis-jieba

es官方文档https://www.elastic.co/guide/en/elasticsearch/reference/2.3/getting-started.html

地址http://es.hylstudio.cn/jieba

接口说明

  • index 主要用于索引分词,分词粒度较细
  • search 主要用于查询分词,分词粒度较粗

返回json中的index为字符序号,从0开始,左闭右开。

 

接口地址 http://es.hylstudio.cn/jieba/_analyze?analyzer=jieba_index

请求方法 POST

请求示例

{“text”:”明天实验取消了,好高兴哈哈哈哈”}

返回示例

接口地址 http://es.hylstudio.cn/jieba/_analyze?analyzer=jieba_search

请求方法 POST

请求示例

{“text”:”明天实验取消了,好高兴哈哈哈哈”}

返回示例

 

Linux笔记关于同步文件

由于insight的数据需要每天同步,所以需要每天定时同步日志到集群的HDFS。所以写了个简单的脚本进行同步。脚本如下
前提是配置好ssh免密码

以上脚本放入集群hdfs的NameNode主机上,执行crontab -e编辑定时任务如下

1 0 * * * /bin/bash /path/sync.sh

这样每天凌晨00:01会定时同步前一天的日志到集群,便于定时执行分析任务。

另外,在初始化好/var/lib/analyticstasks后, 为了节省时间把整个文件夹直接复制到集群并改名为analytics-bistu。但是venv虚拟环境下的变量并没有更改,所以更改所有venv/bin下python解释器,除了activate文件在中间有个环境变量,其他的都在第一行。可以用sed批量替换。。。
scp不会复制软连接,所以可以考虑使用rsync。。。具体命令还没写=-=

Linux服务器基本配置

当拿到一个服务器要开始搭建服务时候,首先应该确认一些设置。。。以免之后被坑。。。
我用的最多的服务器系统版本是Ubuntu 14.04。。以此为例来记录下常见操作

首先确定网络设置,包括IP、DNS、HOSTNAME、HOSTS配置
/etc/resolv.conf中设置dns,常见的202.106.46.151、8.8.8.8、114.114.114.114
持久化DNS配置,/etc/resolvconf/resolv.conf.d/base加入nameserver xxx.xxx.xxx.xxx
/etc/network/interfaces中设置IP、网卡等信息、确定能正常上网
/etc/hostname中设置本机名称
/etc/hosts中把localhost和hostname都解析到本地127.0.0.1

服务器时间的设置,使用NTP服务器同步时间。如果你在BISTU校内,可以使用sudo ntpdate cas.bistu.edu.cn进行同步
使用sudo vim /etc/ntp.conf命令
编辑ntp服务器池,添加server cas.bistu.edu.cn
重启ntp服务sudo service ntp restart即可
如果在校外,可以使用s2c.time.edu.cn北邮的时间服务器,另附常用服务器地址 https://www.douban.com/note/171309770/

设置apt源为国内源,文件地址/etc/apt/sources.list,校内建议用清华的、校外用网易的。

清华地址 https://mirrors.tuna.tsinghua.edu.cn/

网易地址  http://mirrors.163.com/ 
备份原版cp /etc/apt/sources.list /etc/apt/sources.list.backup
清空文件:>/etc/apt/sources.list

把内容更新vim /etc/apt/sources.list

sudo apt-get update

ansible初步–批量升级CDH的jdk

由于要在集群上操作配置、并且即将搭建一个新的集群,所以我不想再像之前一样复制粘贴命令了!!会死人的。。。
so,看了下ansible,
环境:Ubuntu 14.04主机*6
六台服务器运行的命令相同
(前提:已经做完root密钥互信)
安装:
sudo apt-get install ansible

配置:
sudo /etc/ansible/hosts
添加进去所有主机,并分组,如下
[hadoop]
hadoop1.bistu.edu.cn
hadoop2.bistu.edu.cn
hadoop3.bistu.edu.cn
hadoop4.bistu.edu.cn
hadoop5.bistu.edu.cn
hadoop6.bistu.edu.cn

批量传送文件,这次是升级jdk
把安装包放到所有主机的home下
ansible all -m copy -a 'src=/root/jdk8.tar.gz dest=~/'
解压
ansible all -a 'tar -zxvf ~/jdk8.tar.gz -C /usr/lib/jvm/'
修改默认版本指针
ansible all -a 'ln -s /usr/lib/jvm/jdk8 /usr/lib/jvm/default-java'

关闭集群角色,重启服务
ansible all -a 'service cloudera-scm-agent restart'

查看状态是否正确
ansible all -a 'ls -l /usr/lib/jvm/'

当需要使用管道的时候需要使用raw模块,比如
ansible all -m raw -a 'ps -aux|grep java'