Fork me on GitHub
Skye's Blog

Forever youthful,forever weeping


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

oracle启动dbstart出错或无反应的解决办法及自启动

发表于 2016-08-20 | 分类于 Linux |

问题一

启动dbstart 报错

1
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener Usage: /home/oracle/oracle11g/product/11.2.0/dbhome_1/bin/dbstart ORACLE_HOME

linux成功安装Oracle后切换到Oracle用户后,直接使用dbstart($ORACLE_HOME/bin中)启动oracle数据库报错如上。原因是dbstart调用的tnslsnr脚本位置有错。解决办法:
打开该脚本:vim $ORACLE_HOME/bin/dbstart
查找“ORACLE_HOME_LISTENER”变量的定义处,
修改
ORACLE_HOME_LISTENER=$1
为ORACLE_HOME_LISTENER=$ORACLE_HOME

问题二

启动dbstart没有反应,即不报错也不显示启动信息
原因是oracle的配置需要修改才能使用dbstart启动对应的数据实例。
解决办法:

sudo vim /etc/oratab
将orcl:/home/oracle/oracle11g/product/11.2.0/dbhome_1:N改为orcl:/home/oracle/oracle11g/product/11.2.0/dbhome_1:Y

问题三

1
2
3
4
>dbstart
Can't find init file for Database "orcl".
Database "orcl" NOT started.

原因就是没有找到init文件 我的数据库实例是orcl
这个文件在$ORACLE_HOME/dbs/目录下
cd $ORACLE_HOME/dbs
解决办法就是建立一个initorcl.ora的软连接就可以了
ln -s spfileego.ora initorcl.ora

Oracle自启动

创建开机自动启动数据库的脚本
开一个普通的字符终端连接到UbuntuServer,运行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# vi /etc/init.d/Oracledb
文件内容如下:
#!/bin/bash
#
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_HOME=/home/oracle/oracle11g/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

再运行如下命令设置权限,并放到启动脚本中去:

1
2
# chmod 755 /etc/init.d/Oracledb
# update-rc.d Oracledb defaults 99

最后:
# vi /etc/oratab
把文件中的N改成Y,即”orcl:/opt/oracle/product/db:N”修改为”orcl:/opt/oracle/product/db:Y”。

Linux日常操作笔记

发表于 2016-08-19 | 分类于 Linux |

查看当前所在的工作目录的全路径 pwd

1
2
[root@localhost ~]# pwd
/root

查看当前系统的时间 date

1
2
3
4
5
6
7
8
[root@localhost ~]# date +%Y-%m-%d
2016-07-26
date +%Y-%m-%d --date="-1 day" #加减也可以 month | year
2016-07-25
[root@localhost ~]# date -s "2016-07-28 16:12:00" ## 修改时间
Thu Jul 28 16:12:00 PDT 2016

查看有谁在线(哪些人登陆到了服务器)

1
2
3
4
5
who 查看当前在线
[root@localhost ~]# who
hadoop tty1 2016-07-26 00:01 (:0)
hadoop pts/0 2016-07-26 00:49 (:0.0)
root pts/1 2016-07-26 00:50 (192.168.233.1)

###last 查看最近的登陆历史记录

1
2
3
4
5
[root@localhost ~]# last
root pts/1 192.168.233.1 Tue Jul 26 00:50 still logged in
hadoop pts/0 :0.0 Tue Jul 26 00:49 still logged in
hadoop tty1 :0 Tue Jul 26 00:01 still logged in
reboot system boot 2.6.32-573.el6.x Tue Jul 26 07:58 - 16:23 (2+08:24)

关机/重启

1
2
3
4
5
6
7
8
9
关机(必须用root用户)
shutdown -h now ## 立刻关机
shutdown -h +10 ## 10分钟以后关机
shutdown -h 12:00:00 ##12点整的时候关机
halt # 等于立刻关机
重启
shutdown -r now
reboot # 等于立刻重启

清屏

clear ## 或者用快捷键 ctrl + l

退出当前进程

ctrl+c ##有些程序也可以用q键退出

挂起当前进程

1
2
3
ctrl+z ## 进程会挂起到后台
bg jobid ## 让进程在后台继续执行
fg jobid ## 让进程回到前台

echo

相当于java中System.out.println(userName)

1
2
3
4
5
[root@localhost ~]# a="hi boy"
[root@localhost ~]# echo a
a
[root@localhost ~]# echo $a
hi boy

目录操作

查看目录信息

1
2
3
ls / ## 查看根目录下的子节点(文件夹和文件)信息
ls -al ## -a是显示隐藏文件 -l是以更详细的列表形式显示
ls -l ##有一个别名: ll 可以直接使用ll <是两个L>

切换工作目录

1
2
3
4
5
cd /home/hadoop ## 切换到用户主目录
cd ~ ## 切换到用户主目录
cd - ## 回退到上次所在的目录
cd 什么路径都不带,则回到用户的主目录

创建文件夹

1
2
3
mkdir aaa ## 这是相对路径的写法
mkdir /data ## 这是绝对路径的写法
mkdir -p aaa/bbb/ccc ## 级联创建目录

删除文件夹

1
2
3
rmdir aaa ## 可以删除空目录
rm -r aaa ## 可以把aaa整个文件夹及其中的所有子节点全部删除
rm -rf aaa ## 强制删除aaa

修改文件夹名称

1
2
3
mv aaa boy
mv本质上是移动
mv install.log aaa/ 将当前目录下的install.log 移动到aaa文件夹中去
1
2
3
4
5
6
7
8
9
10
11
12
rename 可以用来批量更改文件名
[root@localhost aaa]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 28 17:33 1.txt
-rw-r--r--. 1 root root 0 Jul 28 17:33 2.txt
-rw-r--r--. 1 root root 0 Jul 28 17:33 3.txt
[root@localhost aaa]# rename .txt .txt.bak *
[root@localhost aaa]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 28 17:33 1.txt.bak
-rw-r--r--. 1 root root 0 Jul 28 17:33 2.txt.bak
-rw-r--r--. 1 root root 0 Jul 28 17:33 3.txt.bak

文件操作

创建文件

1
2
3
4
5
6
7
8
touch somefile.1
## 创建一个空文件
echo "hi,boy" > somefile.2
## 利用重定向“>”的功能,将一条指令的输出结果写入到一个文件中,会覆盖原文件内容,如果指定的文件不存在,则会创建出来
echo "hi baby" >> somefile.2
## 将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容

vi文本编辑器

最基本用法
vi somefile.4
1 首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑文件内容
2 按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容
3 编辑完成之后,按Esc键退出编辑模式,回到一般模式;
4 再按:,进入“底行命令模式”,输入wq命令,回车即可

常用快捷键
一些有用的快捷键(在一般模式下使用):
a 在光标后一位开始插入
A 在该行的最后插入
I 在该行的最前面插入
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 删除一行
3dd 删除3行
yy 复制一行
3yy 复制3行
p 粘贴
u undo
v 进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v 进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v 进入行选择模式,选择完成后,按y复制,按p粘贴

查找并替换
1 显示行号
:set nu
2 隐藏行号
:set nonu
3 查找关键字
:/you ## 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)
4 替换操作
:s/sad/bbb 查找光标所在行的第一个sad,替换为bbb
:%s/sad/bbb 查找文件中所有sad,替换为bbb

拷贝/删除/移动

1
2
3
4
cp somefile.1 /home/hadoop/
rm /home/hadoop/somefile.1
rm -f /home/hadoop/somefile.1
mv /home/hadoop/somefile.1 ../

查看文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
cat somefile 一次性将文件内容全部输出(控制台)
more somefile 可以翻页查看, 下翻一页(空格) 上翻一页(b) 退出(q)
less somefile 可以翻页查看,下翻一页(空格) 上翻一页(b),上翻一行(↑) 下翻一行(↓) 可以搜索关键字(/keyword)
跳到文件末尾: G
跳到文件首行: gg
退出less : q
tail -10 install.log 查看文件尾部的10行
tail +10 install.log 查看文件 10-->末行
tail -f install.log 小f跟踪文件的唯一inode号,就算文件改名后,还是跟踪原来这个inode表示的文件
tail -F install.log 大F按照文件名来跟踪
head -10 install.log 查看文件头部的10行

打包压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1、gzip压缩
gzip a.txt
2、解压
gunzip a.txt.gz
gzip -d a.txt.gz
3、bzip2压缩
bzip2 a
4、解压
bunzip2 a.bz2
bzip2 -d a.bz2
5、打包:将指定文件或文件夹
tar -cvf bak.tar ./aaa
将/etc/password追加文件到bak.tar中(r)
tar -rvf bak.tar /etc/password
6、解压
tar -xvf bak.tar
7、打包并压缩
tar -zcvf a.tar.gz aaa/
8、解包并解压缩(重要的事情说三遍!!!)
tar -zxvf a.tar.gz
解压到/usr/下
tar -zxvf a.tar.gz -C /usr
9、查看压缩包内容
tar -ztvf a.tar.gz
zip/unzip
10、打包并压缩成bz2
tar -jcvf a.tar.bz2
11、解压bz2
tar -jxvf a.tar.bz2

查找命令

常用查找命令的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1、查找可执行的命令所在的路径:
which ls
2、查找可执行的命令和帮助的位置:
whereis ls
3、从某个文件夹开始查找文件
find / -name "hadooop*"
find / -name "hadooop*" -ls
4、查找并删除
find / -name "hadooop*" -ok rm {} \;
find / -name "hadooop*" -exec rm {} \;
5、查找用户为hadoop的文件
find /usr -user hadoop -ls
6、查找用户为hadoop的文件夹
find /home -user hadoop -type d -ls
7、查找权限为777的文件
find / -perm -777 -type d -ls
8、显示命令历史
history

grep命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1 基本使用
查询包含hadoop的行
grep hadoop /etc/password
grep aaa ./*.txt
2 cut截取以:分割保留第七段
grep hadoop /etc/passwd | cut -d: -f7
3 查询不包含hadoop的行
grep -v hadoop /etc/passwd
4 正则表达包含hadoop
grep 'hadoop' /etc/passwd
5 正则表达(点代表任意一个字符)
grep 'h.*p' /etc/passwd
6 正则表达以hadoop开头
grep '^hadoop' /etc/passwd
7 正则表达以hadoop结尾
grep 'hadoop$' /etc/passwd
规则:
. : 任意一个字符
a* : 任意多个a(零个或多个a)
a? : 零个或一个a
a+ : 一个或多个a
.* : 任意多个任意字符
\. : 转义.
o\{2\} : o重复两次
查找不是以#开头的行
grep -v '^#' a.txt | grep -v '^$'
以h或r开头的
grep '^[hr]' /etc/passwd
不是以h和r开头的
grep '^[^hr]' /etc/passwd
不是以h到r开头的
grep '^[^h-r]' /etc/passwd

文件权限的操作

linux文件权限的描述格式解读

drwxr-xr-x (也可以用二进制表示 111 101 101 –> 755)

d:标识节点类型(d:文件夹 -:文件 l:链接)
r:可读 w:可写 x:可执行
第一组rwx: ## 表示这个文件的拥有者对它的权限:可读可写可执行
第二组r-x: ## 表示这个文件的所属组用户对它的权限:可读,不可写,可执行
第三组r-x: ## 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行

修改文件权限

1
2
3
4
5
6
7
8
9
10
11
chmod g-rw haha.dat ## 表示将haha.dat对所属组的rw权限取消
chmod o-rw haha.dat ## 表示将haha.dat对其他人的rw权限取消
chmod u+x haha.dat ## 表示将haha.dat对所属用户的权限增加x
chmod a-x haha.dat ## 表示将haha.dat对所用户取消x权限
也可以用数字的方式来修改权限
chmod 664 haha.dat
就会修改成 rw-rw-r--
如果要将一个文件夹的所有内容权限统一修改,则可以-R参数
chmod -R 770 aaa/

修改文件所有权

1
2
3
4
<只有root权限能执行>
chown angela aaa ## 改变所属用户
chown :angela aaa ## 改变所属组
chown angela:angela aaa/ ## 同时修改所属用户和所属组

基本的用户管理

1
2
3
4
5
6
添加一个用户:
useradd spark
passwd spark 根据提示设置密码即可
删除一个用户:
userdel -r spark 加一个-r就表示把用户及用户的主目录都删除

添加用户

1
2
3
4
5
6
7
8
添加一个tom用户,设置它属于users组,并添加注释信息
分步完成:useradd tom
usermod -g users tom
usermod -c "hr tom" tom
一步完成:useradd -g users -c "hr tom" tom
设置tom用户的密码
passwd tom

修改用户

1
2
3
4
5
6
7
8
修改tom用户的登陆名为tomcat
usermod -l tomcat tom
将tomcat添加到sys和root组中
usermod -G sys,root tomcat
查看tomcat的组信息
groups tomcat

用户组操作

1
2
3
4
5
6
7
8
9
10
11
12
添加一个叫america的组
groupadd america
将jerry添加到america组中
usermod -g america jerry
将tomcat用户从root组和sys组删除
gpasswd -d tomcat root
gpasswd -d tomcat sys
将america组名修改为am
groupmod -n am america

为用户配置sudo权限

1
2
3
4
5
6
7
用root编辑 vi /etc/sudoers
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
然后,hadoop用户就可以用sudo来执行系统级别的指令
[root@localhost ~]$ sudo useradd xiaoming

系统管理操作

挂载外部存储设备

可以挂载光盘、硬盘、磁带、光盘镜像文件等

  • 挂载光驱
1
2
mkdir /mnt/cdrom 创建一个目录,用来挂载
mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/ 将设备/dev/cdrom挂载到 挂载点 : /mnt/cdrom中
  • 挂载光盘镜像文件(.iso文件)
1
2
3
mount -t iso9660 -o loop /home/hadoop/Centos-6.7.DVD.iso /mnt/centos
注:挂载的资源在重启后即失效,需要重新挂载。要想自动挂载,可以将挂载信息设置到/etc/fstab配置文件中,如下:
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0

卸载 umount

umount /mnt/cdrom

存储空间查看

df -h

统计文件或文件夹的大小

1
2
3
du -sh /mnt/cdrom/packages
df -h 查看磁盘的空间
wc -lwc 统计文件行数、字数、字节数

系统服务管理

1
2
3
4
service sshd status
service sshd stop
service sshd start
service sshd restart

系统启动级别管理

1
2
3
4
5
6
7
8
9
10
11
12
13
vi /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
## 通常将默认启动级别设置为:3

进程管理

1
2
3
4
top
free
ps -ef | grep ssh
kill -9

SSH免密登陆配置

SSH工作机制

1、相关概念
SSH 为 Secure Shell(安全外壳协议) 的缩写。
很多ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。
而SSH就是专为远程登录会话和其他网络服务提供安全性的协议。

SSH是由客户端和服务端的软件组成的
服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

2、认证机制
从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。

第二种级别(基于密钥的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,
客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,
然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。
客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

密钥登陆方式配置

假如 A 要登陆 B
在A上操作:
1/ 首先生成密钥对
ssh-keygen (提示时,直接回车即可)
2/ 再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中
ssh-copy-id B

网络管理

主机名配置

1
2
3
4
5
6
7
8
1/ 查看主机名
hostname
2/ 修改主机名(重启后无效)
hostname hadoop
3/ 修改主机名(重启后永久生效)
vi /ect/sysconfig/network

IP地址配置

1
2
3
4
5
6
7
8
9
10
11
修改IP地址
1/ 方式一:setup
用root输入setup命令,进入交互式修改界面
2/ 方式二:修改配置文件 一般使用这种方法
(重启后永久生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
3/ 方式三:ifconfig命令
(重启后无效)
ifconfig eth0 192.168.12.22

网络服务管理

1 后台服务管理

1
2
3
4
5
service network status 查看指定服务的状态
service network stop 停止指定服务
service network start 启动指定服务
service network restart 重启指定服务
service --status-all 查看系统中所有的后台服务

2 设置后台服务的自启配置

1
2
3
chkconfig 查看所有服务器自启配置
chkconfig iptables off 关掉指定服务的自动启动
chkconfig iptables on 开启指定服务的自动启动

转载自:

http://www.kuqin.com/shuoit/20160805/352716.html

Mahout 如何进行 Precision 和 Recall 的计算

发表于 2016-08-18 | 分类于 推荐系统 |

当为某一个用户做推荐评估时,选择一个临界值,以该临界值为参照为该用户构造一个目标最大击中集(即相关项RelevantItemsIDs),然后将该用户数据中的包含在最大击中集中的物品去除,这样形成一个新的训练集。这个新的训练集中,只是去除了部分数据。然后,使用该训练集为该用户进行推荐。如果推荐的物品包含在最大击中集中,则说明击中。依照这个办法为该用户计算 Precision 和 Recall 值。依照这个办法为所有的用户计算 Precision 和 Recall 值。然后,Precision 和 Recall 的平均值作为模型的 Precision 和 Recall 值。

RecommenderIRStatsEvaluator是一个接口,用于得到推荐系统的准确率,召回率等统计指标。
它定义的函数如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public IRStatistics evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel dataModel, IDRescorer rescorer, int at, double relevanceThreshold, doubleevaluationPercentage)
/**
* @param recommenderBuilder
* 它通过public Recommender buildRecommender(DataModel model)定义推荐系统创建的方式;
* @param dataModelBuilder
* 数据模型创建的方式,如果已经创建好了数据模型,一般这个参数可以为null
* @param dataModel
* 推荐系统使用的数据模型
*
* @param rescorer
* 推荐排序的方式,一般情况下可以为null
*
* @param at
* 推荐几个物品(TOPN),,它用来定义计算准确率的时候,一个user可以拥有的相关项items的最大个数,相关项item定义为user对这个item的评价超过了relevanceThreshold的项
* @param relevanceThreshold
* 相关临界值 ,和at一起使用定义一个user的相关项

计算临界值

1
2
3
//computeThreshold(prefs)这个方法主要是计算得到当前用户对物品 打分的平均值加上标准差的值
double theRelevanceThreshold = Double.isNaN(relevanceThreshold) ? computeThreshold(prefs)
: relevanceThreshold;

getRelevantItemsIDs

按照用户对物品的打分从大到小排序,将大于设定的的relevanceTheshold的值存入relevantItemIDs中,relevantItemIDs最大值为at

1
2
3
4
5
6
7
8
/**
* getRelevantItemsIDs的实现,
*1.首先得到userID的Preferences
*2.创建一个FastIDSet用来保存相关项的id,大小为at
*3.prefs根据值大小排序
*4.遍历pref,如果user对这个item的评价prefs.getValue(i)不小于相关阈值,则将这个item的加入相关项,最多取at个满足条件的item
*/
FastIDSet relevantItemIDs = dataSplitter.getRelevantItemsIDs(userID, at, theRelevanceThreshold, dataModel);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public FastIDSet getRelevantItemsIDs(long userID,
int at,
double relevanceThreshold,
DataModel dataModel) throws TasteException {
PreferenceArray prefs = dataModel.getPreferencesFromUser(userID);
//定义最大理论击中物品集合
FastIDSet relevantItemIDs = new FastIDSet(at);
//将用户的打分排序
prefs.sortByValueReversed();
for (int i = 0; i < prefs.length() && relevantItemIDs.size() < at; i++) {
if (prefs.getValue(i) >= relevanceThreshold) {
relevantItemIDs.add(prefs.getItemID(i));
}
}
return relevantItemIDs;
}

获取训练集

这个训练集的构造规则是:

  1. 对于其它的用户,将他们所有的(item,preference)都加入训练集;
  2. 对于这个用户user,将它的除了相关项之外的其它项的喜好加入训练集;

然后,我们使用推荐算法进行推荐。推荐的时候,我们就可能给UserID 推荐移除的物品或者其他的物品。

1
2
3
4
5
6
7
FastByIDMap<PreferenceArray> trainingUsers = new FastByIDMap<PreferenceArray>(dataModel.getNumUsers());
//对所有用户进行处理
//processOtherUser :Adds a single user and all their preferences to the training model.
LongPrimitiveIterator it2 = dataModel.getUserIDs();
while (it2.hasNext()) {
dataSplitter.processOtherUser(userID, relevantItemIDs, trainingUsers, it2.nextLong(), dataModel);
}

构造训练模型

1
DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingUsers): dataModelBuilder.buildDataModel(trainingUsers);

进行推荐

1
2
3
4
5
Recommender recommender = recommenderBuilder.buildRecommender(trainingModel);
int intersectionSize = 0;
List<RecommendedItem> recommendedItems = recommender.recommend(userID, at, rescorer);

计算推荐结果包含在相关项中的个数

1
2
3
4
5
6
7
8
List<RecommendedItem> recommendedItems = recommender.recommend(userID, at, rescorer);
for (RecommendedItem recommendedItem : recommendedItems) {
if (relevantItemIDs.contains(recommendedItem.getItemID())) {
intersectionSize++;
}
}

计算查全率、查准率

1
2
3
4
5
6
7
8
9
int numRecommendedItems = recommendedItems.size();
// Precision
if (numRecommendedItems > 0) {
precision.addDatum((double) intersectionSize / (double) numRecommendedItems);
}
// Recall
recall.addDatum((double) intersectionSize / (double) numRelevantItems);

参考

http://pan.baidu.com/s/1pKE97wJ
http://www.myexception.cn/cloud/1983215.html

Ubuntu16.04安装Oracle11g

发表于 2016-08-17 | 分类于 Linux |

Oracle用户创建

1
2
3
4
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle

安装依赖

1
2
3
4
5
6
7
mkdir /tmp/libstdc++5
cd /tmp/libstdc++5
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-28ubuntu1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-28ubuntu1_i386.deb
sudo dpkg --force-architecture -i libstdc++5_3.3.6-28ubuntu1_i386.deb
sudo mv /usr/lib/libstdc++.so.5* /usr/lib32/
sudo dpkg -i libstdc++5_3.3.6-28ubuntu1_amd64.deb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc
1
2
3
4
5
6
# 以下包安装不成功,先略过
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install lsb-cxx
sudo apt-get install pdksh

修改/etc/sysctl.conf增加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shmmax=1073741824
net.ipv4.ip_local_port_range = 9000  65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
fs.file-max = 6815744
vm.hugetlb_shm_group = 1002

运行一下命令更新内核参数

sudo sysctl -p

修改/etc/security/limits.conf增加以下内容

1
2
3
4
5
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

修改/etc/pam.d/login增加以下内容

1
2
session required /lib/security/pam_limits.so
session required pam_limits.so

欺骗oracle的安装程序

oracle本身并不支持ubuntu来安装,所以要进行欺骗oracle的安装程序(sudo执行):

1
2
3
4
5
6
7
8
9
10
11
12
mkdir /usr/lib64
ln -s /etc /etc/rc.d
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
vim /etc/redhat-release
echo 'Red Hat Linux release 5' > /etc/redhat-release

为Oracle配置环境变量

1
2
3
4
5
6
7
8
9
10
11
#oracle安装目录,第6步创建的文件夹
export ORACLE_BASE=/home/oracle/oracle11g
#网上说可以随便写
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
#数据库的sid
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
#默认字符集
export NLS_LANG=.AL32UTF8
#环境变量
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64;

安装oracle

上面的系统配置完成之后,最好重启一下服务器,使用oracle用户登陆系统。

  1. 上传下载好的oracle压缩文件到/home/oracle目录下。
  2. 进入/home/oracle目录,执行# unzip linux.x64_11gR2_database_1of2.zip和# unzip linux.x64_11gR2_database_2of2.zip,解压的文件在/home/oracle/database目录中。
  3. 设置/home/oracle/database目录的权限:

    1
    2
    # chown oracle:oinstall /home/oracle/database -R
    # chmod 775 /home/oracle/database -R
  4. 进入/home/oracle/database目录,执行$ ./runInstaller,当检查均通过,会出现oracle安装界面,一路next,有一步可以选择字符,选utf8

安装过程可能遇到的问题

  • Oracle安装界面乱码解决方法
    执行:

    1
    2
    exportNLS_LANG=AMERICAN_AMERICA.UTF8
    export LC_ALL=C
  • Error in invoking target ‘install’ of makefile ‘/home/dong/tools/oracle11g/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’. See ‘/home/dong/tools/oraInventory/logs/installActions2015-01-22_09-39-03AM.log’ for details.

    解决方法:

    从http://download.csdn.net/detail/adnerly/9467935下载,使用rpm安装这个glibc-static-2.17-55.el7.x86_64.rpm资源,安装即可, 然后点击retry ,接着往下执行
    注:这是网上提供的解决方案,我的系统安装失败,我直接跳过了

  • Error in invoking target ‘agent nmhs’ of makefile ‘/home/dong/tools/oracle11g/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk’

    解决方法:

    打开新的终端窗口
    使用vi命令,打开/home/oracle/oracle11g/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk文件,将$(MK_EMAGENT_NMECTL)修改成$(MK_EMAGENT_NMECTL)-lnnz11 即可,然后点击retry ,接着往下执行

  • Error in invoking target ‘all_no_orcl’ of makefile ‘/home/oracle/oracle11g/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’. See ‘/home/dong/tools/Inventory/logs/installActions2016-03-19_02-37-44PM.log’ for details.

    解决办法:

    打开一个新的终端,输入如下四个命令:

1
2
3
4
5
6
7
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk

然后在图形界面点击‘Retry’就能继续安装了。
参考

http://www.jianshu.com/p/9b2f601c275d

然后按照安装程序提示最后执行两个脚本

1
2
sudo /home/oracle/oraInventory/orainstRoot.sh
sudo /home/oracle/oracle11g/product/11.2.0/dbhome_1/root.sh

创建监听,执行$ netca启动配置界面

参考

http://www.jianshu.com/p/9b2f601c275d

完成之后,执行命令$ lsnrctl start启动监听服务。

创建数据库实例,执行$ dbca启动配置界面

最后验证是否安装成功,浏览器访问

https://192.168.1.114:1158/em

创建开机自动启动数据库的脚本

开一个普通的字符终端连接到UbuntuServer,运行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# vi /etc/init.d/oracledb
文件内容如下:
#!/bin/bash
#
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_HOME=/home/oracle/oracle11g/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

再运行如下命令设置权限,并放到启动脚本中去:

1
2
# chmod 755 /etc/init.d/oracledb
# update-rc.d oracledb defaults 99

最后:
# vi /etc/oratab
把文件中的N改成Y,即”orcl:/opt/oracle/product/db:N”修改为”orcl:/opt/oracle/product/db:Y”。

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
$ ps -ef|grep ora_|grep -v grep  -->查看oracle进程
$ ps -ef|grep tnslsnr|grep -v grep  -->查看oracle的监听进程
$ lsnrctl start -->启动监听
$ dbstart -->启动数据库
$ dbstop -->停止数据库
$ emctl start dbconsole -->启动em控制台
$ isqlplusctl start -->启动pl/sql
$ sqlplus '/as sysdba' -->登录sqlplus
$ env  -->输出当前用户的环境变量
$ netca -->启用监听配置程序

参考文章

CentOS6.7安装Oracle 11g2R傻瓜图文教程
Ubuntu 14.04安装Oracle11g 64位
ubuntu16.04安装oracle11g
Ubuntu Server 11.04 安装 Oracle 11g r2 图解教程

推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

发表于 2016-08-17 | 分类于 推荐系统 |

下面简单列举几种常用的推荐系统评测指标:

准确率与召回率(Precision & Recall)

准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。

正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:

  1. 正确率 = 提取出的正确信息条数 / 提取出的信息条数

  2. 召回率 = 提取出的正确信息条数 / 样本中的信息条数

    两者取值在0和1之间,数值越接近1,查准率或查全率就越高。

  3. F值 = 正确率 召回率 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)


放到推荐系统中便是

准确率 = 推荐给user的Items中属于user相关项的个数 / 推荐给user的Items的总个数

召回率 = 推荐给user的Items中属于user相关项的个数 / user的所有相关项item个数


不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

正确率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F值 = 70% 50% 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

正确率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F值 = 70% 100% 2 / (70% + 100%) = 82.35%

由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

综合评价指标(F-Measure)

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-Measure是Precision和Recall加权调和平均:

当参数α=1时,就是最常见的F1,也即

可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

E值

E值表示查准率P和查全率R的加权平均值,当其中一个为0时,E值为1,其计算公式:

b越大,表示查准率的权重越大。

平均正确率(Average Precision, AP)

平均正确率表示不同查全率的点上的正确率的平均。

转载自:

http://bookshadow.com/weblog/2014/06/10/precision-recall-f-measure/

Ubuntu 16.04 mysql安装配置

发表于 2016-08-16 | 分类于 Linux |

安装mysql

sudo apt-get install mysql-server mysql-client

测试是否安装成功

sudo netstat -tap | grep mysql

相关操作

  • 登录 mysql -uroot -p
  • 检查MySQL服务器占用端口 netstat -nlt|grep 3306
  • 检查MySQL服务器系统进程 ps -aux|grep mysql
  • 查看数据库的字符集编码 show variables like '%char%';

让MySQL服务器被远程访问

  • 打开mysql配置文件

    1
    2
    3
    4
    # 注意:不同 mysql 版本此配置文件位置和名字可能不同
    sudo vim /etc/mysql/my.cnf
    #找到将bind-address = 127.0.0.1注销​
    #bind-address = 127.0.0.1
  • 修改后,重启MySQL服务器
    sudo /etc/init.d/mysql restart

  • 重新登录mysql -uroot -p

    1
    2
    grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';
    flush privileges;
  • 检查MySQL服务器占用端口

    1
    2
    ~ netstat -nlt|grep 3306
    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

我们看到从之间的网络监听从 127.0.0.1:3306 变成 0 0.0.0.0:3306,表示MySQL已经允许远程登陆访问。

将字符编码设置为UTF-8

默认情况下,MySQL的字符集是latin1,因此在存储中文的时候,会出现乱码的情况,所以我们需要把字符集统一改成UTF-8。
打开mysql配置文件
sudo vim /etc/mysql/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
a) 打开mysql配置文件:
vim/etc/mysql/my.cnf
b) 在[client]下追加:
default-character-set=utf8
c) 在[mysqld]下追加:
character-set-server=utf8
d) 在[mysql]下追加:
default-character-set=utf8

修改后,重启MySQL服务器,并登录
mysql -uroot -p

再次查看字符串编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Mahout0.10.1安装

发表于 2016-08-15 | 分类于 大数据 |

解压安装包

编辑环境变量

sudo vim /etc/profile

1
2
3
4
5
6
#MAHOUT
export MAHOUT_HOME=/home/ubuntu/cloud/mahout-0.10.1
export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$MAHOUT_HOME/conf:$MAHOUT_HOME/bin:

更新配置

source /etc/profile

输入mahout测试 出现许多算法

进行kmeans算法简单运行

  • 下载测试数据集synthetic_control.data
    http://archive.ics.uci.edu/ml/databases/synthetic_control/
  • 在hdfs上创建目录 /user/ubuntu/testdata
  • 上传测试数据
    hadoop fs -put synthetic_control.data /user/ubuntu/testdata
  • 运行
    mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

参考

http://www.cnblogs.com/zhangduo/p/4679907.html

Hadoop2.7.2集群搭建

发表于 2016-08-15 | 分类于 大数据 |

四台电脑集群

1
2
3
4
192.168.1.111 master
192.168.1.112 slave1
192.168.1.113 slave2
192.168.1.114 slave3

修改hosts

vim /etc/hosts

配置master到其它三台slave的免密码登陆

各服务器上使用 ssh-keygen -t rsa 一路按回车就行了。
刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。
打开~/.ssh 下面有三个文件
authorized_keys,已认证的keys
id_rsa,私钥
id_rsa.pub,公钥 三个文件。
下面就是关键的地方了,(我们要做ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)
①在master上将公钥放到authorized_keys里。命令:
sudo cat id_rsa.pub >> authorized_keys
②将master上的authorized_keys放到其他linux的~/.ssh目录下。命令:
sudo scp authorized_keys ubuntu@192.168.1.112:~/.ssh
sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。
③修改authorized_keys权限,命令:chmod 644 authorized_keys
④测试是否成功
ssh slave1 输入用户名密码,然后退出,再次ssh slave1不用密码,直接进入系统。这就表示成功了。

安装jdk1.7

  1. mkdir /usr/java
  2. sudo tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/java
  3. vim /etc/profile

    1
    2
    3
    export JAVA_HOME=/usr/java/jdk1.7.0_79
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
  4. 刷新配置
    source /etc/profile

  5. 测试
    java -version

关闭每台机器的防火墙

sudo ufw disable (重启生效)

创建/home/cloud目录

mkdir ~/cloud

解压hadoop

tar -zxvf hadoop-2.7.2.tar.gz -C ./cloud

配置hadoop-env.sh yarn-env.sh

修改JAVA_HOME值export JAVA_HOME=/usr/java/jdk1.7.0_79

创建文件夹

1
2
3
mkdir /home/ubuntu/cloud/hadoop-2.7.2/tmp
mkdir /home/ubuntu/cloud/hadoop-2.7.2/dfs/data
mkdir /home/ubuntu/cloud/hadoop-2.7.2/dfs/name

配置slaves

1
2
3
slave1
slave2
slave3

配置core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/ubuntu/cloud/hadoop-2.7.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.ubuntu.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.ubuntu.groups</name>
<value>*</value>
</property>
</configuration>

配置hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>4</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/ubuntu/cloud/hadoop-2.7.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/ubuntu/cloud/hadoop-2.7.2/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

配置mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
<property> <name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

配置yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>

复制到其它节点

1
2
3
sudo scp -r /home/ubuntu/cloud ubuntu@slave1:~/
sudo scp -r /home/ubuntu/cloud ubuntu@slave2:~/
sudo scp -r /home/ubuntu/cloud ubuntu@slave3:~/

配置环境变量

vim /etc/profile

1
2
export HADOOP_HOME=/home/ubuntu/cloud/hadoop-2.7.2
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

启动hadoop

  • 格式化namenode hadoop namenode –format
  • 启动hdfs start-dfs.sh
  • 启动yarn start-yarn.sh
  • web端查看 http://master:8088 http://master:50070

ubuntu相关设置

发表于 2016-08-15 | 分类于 Linux |

修改时区

sudo dpkg-reconfigure tzdata

出现时区列表,按照提示选择“Asia/Shanghai”

结果如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Package configuration
┌───────────────────────┤ Configuring tzdata ├───────────────────────┐
│ Please select the city or region corresponding to your time zone. │
│ │
│ Time zone: │
│ │
│ Qyzylorda ↑ │
│ Rangoon ▒ │
│ Riyadh ▒ │
│ Sakhalin ▒ │
│ Samarkand ▒ │
│ Seoul ▒ │
│ Shanghai ▮ │
│ Singapore ▒ │
│ Srednekolymsk ▒ │
│ Taipei ↓ │
│ │
│ │
│ <Ok> <Cancel> │
│ │
└────────────────────────────────────────────────────────────────────┘
Current default time zone: 'Asia/Shanghai'
Local time is now: Mon Aug 15 00:11:59 CST 2016.
Universal Time is now: Sun Aug 14 16:11:59 UTC 2016.
ubuntu@master:~$ date
Mon Aug 15 00:12:13 CST 2016

ubuntu设置静态ip

发表于 2016-08-14 | 分类于 Linux |

找到文件并作如下修改

sudo vim /etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
# The primary network interface
auto eno1
iface eno1 inet static
address 192.168.1.111
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 202.101.172.35 202.101.172.46

修改dns解析

因为以前是dhcp解析,所以会自动分配dns服务器地址

而一旦设置为静态ip后就没有自动获取到的dns服务器了

要自己设置一个

sudo vim /etc/resolv.conf

写上一个公网的DNS,以下为浙江杭州电信DNS

1
2
3
4
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 202.101.172.35
nameserver 202.101.172.46

(注意:8.8.8.8是谷歌的DNS服务器,但是解析速度慢,还是找到一个国内的dns来用)

重启网卡

sudo /etc/init.d/networking restart

1…678
Skye

Skye

学习总结 思想感悟

78 日志
14 分类
37 标签
Weibo GitHub 简书 Email
Links
  • Huanqiang
© 2016 - 2019 Skye