安装/bin/hadoop namenode -format
查看进程 /usr/bin/jps
拷贝到hdfs bin/hadoop dfs -put ../../grid/input in
从hdfs拷贝到linux bin/hadoop dfs -get abc ./xyz
删除 bin/hadoop dfs -rmr abc
查看文件内容 bin/hadoop dfs -cat ./in/abc
查看目录 bin/hadoop dfs -ls ./in/*
bin/hadoop dfs -ls ./out
查看统计信息 bin/hadoop dfsadmin -report
运行样例:bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
http查看namenod:50070端口 http://192.168.0.2:50070/dfshealth.jsp
http查看jobtracker:50030端口 http://192.168.0.2:50030/jobtracker.jsp
http查看日志 http://192.168.0.2:50030/logs http://192.168.0.2:50070/logs
http设置日志级别 http://192.168.0.2:50070/logLevel
HDFS文件操作:
命令方式:
启动:start-all.sh
停止:stop-all.sh
查看 bin/hadoop dfs -ls
存入 bin/hadoop dfs -put 源文件 目标文件
存入 bin/hadoop dfs -copyFromLocal 源文件 目标文件
取出 bin/hadoop dfs -get 源文件 目标文件
删除 bin/hadoop dfs -rmr 源文件夹
删除 bin/hadoop dfs -rm 源文件
查看 bin/hadoop dfs -cat 源文件
查看 bin/hadoop dfs -text 源文件
查看 bin/hadoop dfs -tail 源文件
创建目录 bin/hadoop dfs -mkdir /user/xxx
创建文件 bin/hadoop dfs -touchz /user/xxx
重命名 bin/hadoop dfs -mv /user/xxx user/xxx
合并文件 bin/hadoop dfs -getmerge /user/home/xxx
关闭作业 bin/hadoop job -kill [job-id]
查看整个系统报告 bin/hadoop dfsadmin -report #检查HDFS块状态,包括DN信息
查看是否安全模式:bin/hadoop dfsadmin -safemode get
打开安全模式:bin/hadoop dfsadmin -safemode enter
关闭安全模式:bin/hadoop dfsadmin -safemode leave
启动节点上的datanode: hadoop-daemon.sh start datanode
启动节点上的tasktracker: hadoop-daemon.sh start tasktracker
进行数据负载均衡: start-balancer.sh
启动namenote(start dfs daemons):bin/start-dfs.sh --config $HADOOP_CONF_DIR
启动MapReduce(start mapred daemons):bin/start-mapred.sh --config $HADOOP_CONF_DIR
启动负载均衡:bin/star-balancer.sh #平衡集群文件
并行拷贝:hadoop distcp hdfs://a:8020/xxx hdfs://b:8020///
列出正在运行的Job :hadoop job -list
kill job:hadoop job -kill <job_id>
检查HDFS块状态,是否损坏:hadoop fsck /
删除损坏块:hadoop fsck / -delete
并行copy:hadoop distcp hdfs://ZeroHostName:8020/xxx hdfs://OtherHostName:8020///
API方式:http://hadoop.apache.org/docs/r0.23.6/api/index.html
package cn.forey.hadoop.hdsf
static FileSystem get(Configuration conf)
operator(){
//step 1
得到Configuration对象
//step 2
得到FileSystem对象
//step 3
进行文件操作
}
hadoop jar /home/ZeroUserName/temp/hdfsmkdir.jar cn.forey.hadoop.hdfs.HdfsMkdir
hadoop-0.20.2-examples.jar是hadoop-0.20.2自带的一些案例:
1.aggregatewordcount 计算输入文件中文字个数的基于聚合的MapReduce程序;
2.aggregatewordlist 生成输入文件中文字个数的统计图的基于聚合的MapReduce程序;
3.grep 计算输入文件中匹配正则表达式的文字个数的MapReduce程序;
4.join 合并排序的平均分割的数据库的作业;
5.pentomino 解决五格拼板问题的分块分层的MapReduce程序;
6.pi 使用蒙地卡罗法计算pi的MapReduce程序;
7.Randomtextwriter 在一个节点上写10G随机文本的MapReduce程序;
8.randomwriter 在每个节点上写10G随机数据的MapReduce程序;
9.sleep 在每个Map和Reduce作业中休憩的程序;
10.sort 排序随机写入器生成的数据的MapReduce程序;
11.sudoku 一个九宫格游戏的解决方案;
12.wordcount 在输入文件中统计文字个的统计器。
写MapReduce程序的步骤:
1、把问题转化为MapReduce模型
2、设置运行的参数
3、写map类
4、写reduce类
第三方工具:Ganglia Chukwa Openstack
运行jar文件:bin/hadoop jar /home/.../xxx.jar /home/../input /home/.../output
---------------Hbase------------------
此数据库适用场景:成熟的分析主题,已确立查询模式;高速插入,大量读取;操作简单 key-value
优势:天生面向时间戳查询;基于行键的查询异常快;分布式化解负荷。
1、安装步骤:
单机模式:1>下载解压Hbase安装包 mirror.bjtu.edu.cn/apache/hbase/hbase-0.90.5/
mirror.bit.edu.cn/apache/hbase/
2>修改conf/hbase-env.sh脚本,设置环境变量
3>编辑hbase-site.xml进行配置 在hbase-env.sh加上export JAVA_HOME=/usr
在hbase-site.xml中加上
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/database</value>
</property>
</configuration>
4>启动Hbase bin/start-hbase.sh
5>验证Hmaster已经启动 /usr/bin/jps
6>进入shell bin/hbase shell
伪分布模式: 1>在单点模式的基础上继续
2>编辑hbase-env.sh增加HBASE_CLASSPATH环境变量 export HBASE_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf
3>编辑hbase-site.xml打开分布模式
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/database</value>
</property>
<proerty>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
4>覆盖hadoop核心jar包 主要目的是防止hbase和hadoop版本不同出现兼容性问题,造成hmaster启动异常。、
在hbase的lib目录中$mv hadoop-core-0.20-append-r1056497.jar hadoop-core-0.20-append-r1056497.sav
$ls ../../hadoop-0.20.2/
$cp ../../hadoop-0.20.2/hadoop-0.20.2-core.jar .
$ls
5>启动hbase bin/start-hbase.sh
6>验证启动 /usr/bin/jps
完全分布模式 1>配置hosts,确保涉及的主机名均可以被解析为ip
2>编辑hbase-env.xml
3>编辑hbase-site.xml
4>编辑regionservers文件
5>把Hbase复制到其他节点
6>启动Hbase
7>验证启动
2、Web管理界面 192.168.0.2:60010/master.jsp
3、操作数据库:1)HQL:$.\hbase shell
A、帮助 >help
B、查询数据库状态 >status
C、查询数据库版本 >version
D、创建表 >create 'member','member_id','address','info'
E、查看表信息 >list
>describe 'member'
F、删除列族 >disable 'member' //首先需要离线该表
>alter 'member',{NAME=>'member_id',METHOD=>'delete'}
>enbale 'member'
G、删除表 >disable 'member'
>drop 'member'
H、查询一个表是否存在 >exists 'member'
I、判断表是否在线 >is_enabled 'member'
or >is_disabled 'member'
J、插入记录 >put 'member','Jack','info:age','24'
>put 'member','Jack','info:birthday','1987-06-17'
>put 'member','Jack','info:company','alibaba'
>put 'member','Jack','address:country','China'
>put 'member','Jack','address:province','Zhejiang'
>put 'member','Jack','address:city','hangzhou'
K、查询,获取一个行键的所有数据 >get 'member','Jack'
获取行键、列族(列键)所有数据 >get 'member','Jack','info'
L、更新一条记录 >put 'member','Jack','info:age','99'
>get 'member','Jack','info:age'
M、全表扫描 >scan 'member'
N、删除指定行键的字段 >delete 'member','temp','info:age'
>get 'member','temp'
O、删除整行 >deleteall 'member','temp'
P、查询表的行数 >count 'member'
Q、清空表 >truncate 'member'
2)API: http://hbase.apache.org/apidocs/index.html
4、模式设计
A、场景:浏览商品记录
1)行键 userid
2)列族和列 book:bookid
3)为了充分利分布式,可以用reverse key、hash等技巧改造行键
B、场景:推荐商品
1)两个表:u-t,t-u
2)U-t:行键 userid,列族和列 thread:threadid
3)T-u:行键 threadid,列族和列 user:userid
4)查询,t-u:threadid-->userid
u-t: userid-->threadid,
在程序中实现去重和统计功能。
C、场景:学生表(学号,身份证号,姓名,性别,系,年龄)在学号或身份证事情上查询
主表:行键学号,列族为学生,下面的列是身份证号,姓名,性别,系,年龄
辅助(索引)表:行键为身份号,列族和列为学号。
D、复合行键设计:<userid>:<colfam>:<messageid>:<timestamp>:<email-message>
<userid>-<messageid>:<colfam>:<qualifief>:<timestamp>:<email-message>
好处:便于分布,便于多条件伸缩查询。
-------------------pig------------------
1、可以看作hadoop的客户端软件,使用类似SQL的面向数据流的pig latin进行数据处理,
可以进行排序、过滤、求和、分组、关联等常用操作,可以自定义函数,
可以看作是pig lation到map-reduce的映射器,
pig latin面向数据分析处理的轻量级脚本语言。
2、安装pig 1)下载并解压pig安装包 http://pig.apache.org/
http://mirror.bjtu.edu.cn/apache/pig/pig-0.9.2/
2)设置环境变量 用户的.bash_profile文件:
PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin
JAVA_HOME=/usr
export JAVA_HOME
3)进入grunt shell验证 pig -x local
3、pig工作模式 1)本地模式 所有文件和执行过程都在本地,一般用于测试程序
2)Mapreduce模式:实际工作模式
a、配置pig的map-reduce模式
设置PATH,增加指向hadoop/bin
PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin:/home/hadoop/hadoop-0.20.2/bin
JAVA_HOME=/usr
PIG_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf/
export PIG_CLASSPATH
export JAVA_HOME
export PATH
设置PIG_CLASSPATH环境变量
修改hosts文件 vi /etc/hosts
启动pig
4、pig的运行方法
a.脚本
b.Grunt
自动补全机制,只能对命令补全
autocomplete文件
eclipse插件PigPen
备注: 一般linux的命令可直接用,如cat ls cd
copyeToLocal example2 ttt
运行linux的命令:如 sh /usr/bin/jps
Grunt shell命令:cat fs sh cd cp copyFromLocal copyToLocal dump
describe aliases explain help kill ls mv mkdir
pwd quit register rm rmf set illustrate run exec
scriptDone
c.嵌入式
5.pig数据模型
Bag:表
Tuple:行,记录
Field:属性
Pig:不要求同一个bag里面的各个tuple有相同数量或相同灰型的field
6.pig lation常用语句
LOAD:载入数据的方法
FOREACH:逐行扫描进行某种处理
FILTER:过滤行
DUMP:把结果显示到屏幕
STORE:把结果保存到文件
grunt>records = LOAD 'input/ncdc/micro-tab/sample.txt'
>>AS (year:chararray,temperature:int,quality:int);
grunt>DUMP records;
grunt>DESCRIBE records;
grunt>filtered_records = FILTER records BY temperature != 9999 AND (quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9);
grunt>DUMP filtered_records;
grunt>grouped_records = GROUP filtered_records BY year;
grunt>DUMP grouped_records;
grunt>max_temp = FOREACH grouped_records GENERATE group,
>>MAX(filtered_records.temperature);
grunt>DUMP max_temp;
7.LOAD,FOREACH,STORE三部曲
pig
A = LOAD 'csdn.txt' USING PigStorage('#') AS (id,pw,em);
B = FOREACH A GENERATE em;
STORE B INTO '/home/ZeroUserName/temp/email.txt' USING PigStorage();
-------------------hive-------------------
查看进程 /usr/bin/jps
拷贝到hdfs bin/hadoop dfs -put ../../grid/input in
从hdfs拷贝到linux bin/hadoop dfs -get abc ./xyz
删除 bin/hadoop dfs -rmr abc
查看文件内容 bin/hadoop dfs -cat ./in/abc
查看目录 bin/hadoop dfs -ls ./in/*
bin/hadoop dfs -ls ./out
查看统计信息 bin/hadoop dfsadmin -report
运行样例:bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
http查看namenod:50070端口 http://192.168.0.2:50070/dfshealth.jsp
http查看jobtracker:50030端口 http://192.168.0.2:50030/jobtracker.jsp
http查看日志 http://192.168.0.2:50030/logs http://192.168.0.2:50070/logs
http设置日志级别 http://192.168.0.2:50070/logLevel
HDFS文件操作:
命令方式:
启动:start-all.sh
停止:stop-all.sh
查看 bin/hadoop dfs -ls
存入 bin/hadoop dfs -put 源文件 目标文件
存入 bin/hadoop dfs -copyFromLocal 源文件 目标文件
取出 bin/hadoop dfs -get 源文件 目标文件
删除 bin/hadoop dfs -rmr 源文件夹
删除 bin/hadoop dfs -rm 源文件
查看 bin/hadoop dfs -cat 源文件
查看 bin/hadoop dfs -text 源文件
查看 bin/hadoop dfs -tail 源文件
创建目录 bin/hadoop dfs -mkdir /user/xxx
创建文件 bin/hadoop dfs -touchz /user/xxx
重命名 bin/hadoop dfs -mv /user/xxx user/xxx
合并文件 bin/hadoop dfs -getmerge /user/home/xxx
关闭作业 bin/hadoop job -kill [job-id]
查看整个系统报告 bin/hadoop dfsadmin -report #检查HDFS块状态,包括DN信息
查看是否安全模式:bin/hadoop dfsadmin -safemode get
打开安全模式:bin/hadoop dfsadmin -safemode enter
关闭安全模式:bin/hadoop dfsadmin -safemode leave
启动节点上的datanode: hadoop-daemon.sh start datanode
启动节点上的tasktracker: hadoop-daemon.sh start tasktracker
进行数据负载均衡: start-balancer.sh
启动namenote(start dfs daemons):bin/start-dfs.sh --config $HADOOP_CONF_DIR
启动MapReduce(start mapred daemons):bin/start-mapred.sh --config $HADOOP_CONF_DIR
启动负载均衡:bin/star-balancer.sh #平衡集群文件
并行拷贝:hadoop distcp hdfs://a:8020/xxx hdfs://b:8020///
列出正在运行的Job :hadoop job -list
kill job:hadoop job -kill <job_id>
检查HDFS块状态,是否损坏:hadoop fsck /
删除损坏块:hadoop fsck / -delete
并行copy:hadoop distcp hdfs://ZeroHostName:8020/xxx hdfs://OtherHostName:8020///
API方式:http://hadoop.apache.org/docs/r0.23.6/api/index.html
package cn.forey.hadoop.hdsf
static FileSystem get(Configuration conf)
operator(){
//step 1
得到Configuration对象
//step 2
得到FileSystem对象
//step 3
进行文件操作
}
hadoop jar /home/ZeroUserName/temp/hdfsmkdir.jar cn.forey.hadoop.hdfs.HdfsMkdir
hadoop-0.20.2-examples.jar是hadoop-0.20.2自带的一些案例:
1.aggregatewordcount 计算输入文件中文字个数的基于聚合的MapReduce程序;
2.aggregatewordlist 生成输入文件中文字个数的统计图的基于聚合的MapReduce程序;
3.grep 计算输入文件中匹配正则表达式的文字个数的MapReduce程序;
4.join 合并排序的平均分割的数据库的作业;
5.pentomino 解决五格拼板问题的分块分层的MapReduce程序;
6.pi 使用蒙地卡罗法计算pi的MapReduce程序;
7.Randomtextwriter 在一个节点上写10G随机文本的MapReduce程序;
8.randomwriter 在每个节点上写10G随机数据的MapReduce程序;
9.sleep 在每个Map和Reduce作业中休憩的程序;
10.sort 排序随机写入器生成的数据的MapReduce程序;
11.sudoku 一个九宫格游戏的解决方案;
12.wordcount 在输入文件中统计文字个的统计器。
写MapReduce程序的步骤:
1、把问题转化为MapReduce模型
2、设置运行的参数
3、写map类
4、写reduce类
第三方工具:Ganglia Chukwa Openstack
运行jar文件:bin/hadoop jar /home/.../xxx.jar /home/../input /home/.../output
---------------Hbase------------------
此数据库适用场景:成熟的分析主题,已确立查询模式;高速插入,大量读取;操作简单 key-value
优势:天生面向时间戳查询;基于行键的查询异常快;分布式化解负荷。
1、安装步骤:
单机模式:1>下载解压Hbase安装包 mirror.bjtu.edu.cn/apache/hbase/hbase-0.90.5/
mirror.bit.edu.cn/apache/hbase/
2>修改conf/hbase-env.sh脚本,设置环境变量
3>编辑hbase-site.xml进行配置 在hbase-env.sh加上export JAVA_HOME=/usr
在hbase-site.xml中加上
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/database</value>
</property>
</configuration>
4>启动Hbase bin/start-hbase.sh
5>验证Hmaster已经启动 /usr/bin/jps
6>进入shell bin/hbase shell
伪分布模式: 1>在单点模式的基础上继续
2>编辑hbase-env.sh增加HBASE_CLASSPATH环境变量 export HBASE_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf
3>编辑hbase-site.xml打开分布模式
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/database</value>
</property>
<proerty>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
4>覆盖hadoop核心jar包 主要目的是防止hbase和hadoop版本不同出现兼容性问题,造成hmaster启动异常。、
在hbase的lib目录中$mv hadoop-core-0.20-append-r1056497.jar hadoop-core-0.20-append-r1056497.sav
$ls ../../hadoop-0.20.2/
$cp ../../hadoop-0.20.2/hadoop-0.20.2-core.jar .
$ls
5>启动hbase bin/start-hbase.sh
6>验证启动 /usr/bin/jps
完全分布模式 1>配置hosts,确保涉及的主机名均可以被解析为ip
2>编辑hbase-env.xml
3>编辑hbase-site.xml
4>编辑regionservers文件
5>把Hbase复制到其他节点
6>启动Hbase
7>验证启动
2、Web管理界面 192.168.0.2:60010/master.jsp
3、操作数据库:1)HQL:$.\hbase shell
A、帮助 >help
B、查询数据库状态 >status
C、查询数据库版本 >version
D、创建表 >create 'member','member_id','address','info'
E、查看表信息 >list
>describe 'member'
F、删除列族 >disable 'member' //首先需要离线该表
>alter 'member',{NAME=>'member_id',METHOD=>'delete'}
>enbale 'member'
G、删除表 >disable 'member'
>drop 'member'
H、查询一个表是否存在 >exists 'member'
I、判断表是否在线 >is_enabled 'member'
or >is_disabled 'member'
J、插入记录 >put 'member','Jack','info:age','24'
>put 'member','Jack','info:birthday','1987-06-17'
>put 'member','Jack','info:company','alibaba'
>put 'member','Jack','address:country','China'
>put 'member','Jack','address:province','Zhejiang'
>put 'member','Jack','address:city','hangzhou'
K、查询,获取一个行键的所有数据 >get 'member','Jack'
获取行键、列族(列键)所有数据 >get 'member','Jack','info'
L、更新一条记录 >put 'member','Jack','info:age','99'
>get 'member','Jack','info:age'
M、全表扫描 >scan 'member'
N、删除指定行键的字段 >delete 'member','temp','info:age'
>get 'member','temp'
O、删除整行 >deleteall 'member','temp'
P、查询表的行数 >count 'member'
Q、清空表 >truncate 'member'
2)API: http://hbase.apache.org/apidocs/index.html
4、模式设计
A、场景:浏览商品记录
1)行键 userid
2)列族和列 book:bookid
3)为了充分利分布式,可以用reverse key、hash等技巧改造行键
B、场景:推荐商品
1)两个表:u-t,t-u
2)U-t:行键 userid,列族和列 thread:threadid
3)T-u:行键 threadid,列族和列 user:userid
4)查询,t-u:threadid-->userid
u-t: userid-->threadid,
在程序中实现去重和统计功能。
C、场景:学生表(学号,身份证号,姓名,性别,系,年龄)在学号或身份证事情上查询
主表:行键学号,列族为学生,下面的列是身份证号,姓名,性别,系,年龄
辅助(索引)表:行键为身份号,列族和列为学号。
D、复合行键设计:<userid>:<colfam>:<messageid>:<timestamp>:<email-message>
<userid>-<messageid>:<colfam>:<qualifief>:<timestamp>:<email-message>
好处:便于分布,便于多条件伸缩查询。
-------------------pig------------------
1、可以看作hadoop的客户端软件,使用类似SQL的面向数据流的pig latin进行数据处理,
可以进行排序、过滤、求和、分组、关联等常用操作,可以自定义函数,
可以看作是pig lation到map-reduce的映射器,
pig latin面向数据分析处理的轻量级脚本语言。
2、安装pig 1)下载并解压pig安装包 http://pig.apache.org/
http://mirror.bjtu.edu.cn/apache/pig/pig-0.9.2/
2)设置环境变量 用户的.bash_profile文件:
PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin
JAVA_HOME=/usr
export JAVA_HOME
3)进入grunt shell验证 pig -x local
3、pig工作模式 1)本地模式 所有文件和执行过程都在本地,一般用于测试程序
2)Mapreduce模式:实际工作模式
a、配置pig的map-reduce模式
设置PATH,增加指向hadoop/bin
PATH=$PATH:$HOME/bin:/home/hadoop/pig-0.9.2/bin:/home/hadoop/hadoop-0.20.2/bin
JAVA_HOME=/usr
PIG_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf/
export PIG_CLASSPATH
export JAVA_HOME
export PATH
设置PIG_CLASSPATH环境变量
修改hosts文件 vi /etc/hosts
启动pig
4、pig的运行方法
a.脚本
b.Grunt
自动补全机制,只能对命令补全
autocomplete文件
eclipse插件PigPen
备注: 一般linux的命令可直接用,如cat ls cd
copyeToLocal example2 ttt
运行linux的命令:如 sh /usr/bin/jps
Grunt shell命令:cat fs sh cd cp copyFromLocal copyToLocal dump
describe aliases explain help kill ls mv mkdir
pwd quit register rm rmf set illustrate run exec
scriptDone
c.嵌入式
5.pig数据模型
Bag:表
Tuple:行,记录
Field:属性
Pig:不要求同一个bag里面的各个tuple有相同数量或相同灰型的field
6.pig lation常用语句
LOAD:载入数据的方法
FOREACH:逐行扫描进行某种处理
FILTER:过滤行
DUMP:把结果显示到屏幕
STORE:把结果保存到文件
grunt>records = LOAD 'input/ncdc/micro-tab/sample.txt'
>>AS (year:chararray,temperature:int,quality:int);
grunt>DUMP records;
grunt>DESCRIBE records;
grunt>filtered_records = FILTER records BY temperature != 9999 AND (quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9);
grunt>DUMP filtered_records;
grunt>grouped_records = GROUP filtered_records BY year;
grunt>DUMP grouped_records;
grunt>max_temp = FOREACH grouped_records GENERATE group,
>>MAX(filtered_records.temperature);
grunt>DUMP max_temp;
7.LOAD,FOREACH,STORE三部曲
pig
A = LOAD 'csdn.txt' USING PigStorage('#') AS (id,pw,em);
B = FOREACH A GENERATE em;
STORE B INTO '/home/ZeroUserName/temp/email.txt' USING PigStorage();
-------------------hive-------------------