Hadoop生态圈开源项目总结
2014-04-07 21:29
288 查看
一.Hadoop总结
1.HDFS shell
1.0查看帮助
hadoop fs -help <cmd>
1.1上传
hadoop fs -put <linux上文件> <hdfs上的路径>
1.2查看文件内容
hadoop fs -cat <hdfs上的路径>
1.3查看文件列表
hadoop fs -ls /
1.4下载文件
hadoop fs -get <hdfs上的路径> <linux上文件>
1.5删除文件
hadoop fs -rmr <hdfs上的路径>
1.6创建文件夹
hadoop fs -mkdir /dirname
2.HDFS源码分析
FileSystem.get --> 通过反射实例化了一个DistributedFileSystem --> new DFSCilent()把他作为自己的成员变量
在DFSClient构造方法里面,调用了createNamenode,使用了RPC机制,得到了一个NameNode的代理对象,就可以和NameNode进行通信了
FileSystem --> DistributedFileSystem --> DFSClient --> NameNode的代理
3.MR执行流程
(1).客户端提交一个mr的jar包给JobClient
(2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId
(3).client将jar包写入到HDFS当中
(4).开始提交任务(任务的描述信息,不是jar)
(5).JobTracker进程初始化任务
(6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
(7).TaskTracker通过心跳机制领取任务
(8).下载所需的jar,配置文件等
(9).TaskTracker启动一个java child进程,用来执行具体的任务(MapperTask或ReducerTask)
(10).将结果写入到HDFS当中
4.maptask分片
片大小:splitSize = max(minsize,min(maxsize,blockSize));
minsize:mapred.min.split.size(配置文件中设置默认没设置)
maxsize:mapred.max.split.size(配置文件中设置默认long类型的最大值263-1)
默认一般一个block块对应一个map的分片(有些文件进行压缩后不支持分块,上传到hdfs也是一块不会被拆分)
如果想多个map分片对应一个分块就要设置mapred.max.split.size
5.hadoop集群的6个配置文件
第一个:hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
第二个:core-site.xml
<!-- 指定HDFS的namenode的通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-1.1.2/tmp</value>
</property>
第三个:hdfs-site.xml
<!-- 配置HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
第四个:mapred-site.xml
<!-- 指定jobtracker地址 -->
<property>
<name>mapred.job.tracker</name>
<value>hadoop01:9001</value>
</property>
第五个:masters(指定secondarynamenode地址)
hadoop01
第六个:slaves
hadoop02
hadoop03
6.动态添加一台节点
6.1修改主机名 vim /etc/sysconfig/network
6.2使用root用户登录,右键点击右上角网络,选择Edit connections,修改Auto eth1,设置为manual方式,添加IP,NETMASK,GAYEWAY,再点apply
6.3关闭防火墙 service iptables stop ;chkconfig iptables off 重启机器:reboot
6.4配置主节点和新添加节点的hosts文件
6.5分别启动datanode和tasktracker
hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker
6.6在主节点上即namenode所在节点上运行命令刷新
hadoop dfsadmin -refreshNodes
7.hadoop集群管理相关命令
hadoop安全模式:Safe mode is ON(可以读取文件,但是不可以向HDFS写入文件)
hadoop dfsadmin -safemode enter(进入安装器模式) / leave(离开安全模式) / get(获取当前状态) / wait(竟然等待状态)
hadoop mradmin -safemode enter / leave / get / wait
二.配置mysql远程连接
GRANT ALL PRIVILEGES ON database.* TO 'root'@'192.168.1.201' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
三.Sqoop总结
注:将数据库连接驱动拷贝到$SQOOP_HOME/lib里
第一类:sqoop和hdfs交互
数据库中的数据导入到HDFS上
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --columns 'id, account, income, expenses'
指定输出路径、指定数据分隔符
sqoop import --connect jdbc:mysql://192.168.35.100:3306/database --username root --password 123 --table trade_detail --target-dir '/sqoop/td' --fields-terminated-by '\t'
指定Map数据 -m
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2
增加where条件, 注意:条件必须用引号引起来
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --where 'id>3' --target-dir '/sqoop/td2'
增加query语句(使用 \ 将语句换行)
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 \
--query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS' --split-by trade_detail.id --target-dir '/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\即\$CONDITIONS
如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上
将HDFS上的数据导出到数据库中(结尾的-m 1设置执行的map个数为1)
sqoop export --connect jdbc:mysql://192.168.8.120:3306/database --username root --password 123 --export-dir '/td3' --table td_bak -m 1
第二类:sqoop和hive交互
sqoop import --connect jdbc:mysql://192.168.35.100:3306/database --username root --password 123 --table user_info --hive-import --hive-overwrite --hive-table user_info --fields-terminated-by '\t'
四.ZooKeeper总结
1.应用场景(简单介绍7个场景)
数据发布与订阅(配置中心)、负载均衡、命名服务、分布式通知/协调、集群管理与Master选举、分布式锁、分布式队列
2.zk要部署奇数个
3.注意事项(特别要注意,否则启动报错)
在(dataDir=/cloud/zookeeper-3.4.5/tmp)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
echo "1" > myid
将配置好的zk拷贝到其他节点在其他节点上一定要修改myid的内容
在hadoop02应该讲myid的内容改为2 (echo "2" > myid)
在hadoop03应该讲myid的内容改为3 (echo "3" > myid)
五.HBase总结
简介:
建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)
和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
HBase中的表一般有这样的特点:
1) 大:一个表可以有上亿行,上百万列
2) 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
3) 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
1.HBase启动顺序
启动hadfs start-dfs.sh -->启动zk zkServer.sh start --> 启动hbase start-hbase.sh -->启动第二个hbase master: hbase-daemon.sh start master
2.不要忘记修改hbase-env.sh
export HBASE_MANAGES_ZK=false
//告诉hbase使用外部的zk
六.Flume总结
配置HDFS Sink时首先需要将$HADOOP_HOME/hadoop-core-1.0.4.jar和$HADOOP_HOME/lib/commons-configuration-1.6.jar拷贝到$FLUME_HOME/lib/下
启动(切换到flume的安装路径下启动)
#将日志信息打印到控制台
bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties -Dflume.root.logger=INFO,console
#将产生的日志信息保存到日志文件中,并后台运行
bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties >logs/flume_log.log &
七.hive的总结就不赘述了,专门写了博文进行介绍
1.HDFS shell
1.0查看帮助
hadoop fs -help <cmd>
1.1上传
hadoop fs -put <linux上文件> <hdfs上的路径>
1.2查看文件内容
hadoop fs -cat <hdfs上的路径>
1.3查看文件列表
hadoop fs -ls /
1.4下载文件
hadoop fs -get <hdfs上的路径> <linux上文件>
1.5删除文件
hadoop fs -rmr <hdfs上的路径>
1.6创建文件夹
hadoop fs -mkdir /dirname
2.HDFS源码分析
FileSystem.get --> 通过反射实例化了一个DistributedFileSystem --> new DFSCilent()把他作为自己的成员变量
在DFSClient构造方法里面,调用了createNamenode,使用了RPC机制,得到了一个NameNode的代理对象,就可以和NameNode进行通信了
FileSystem --> DistributedFileSystem --> DFSClient --> NameNode的代理
3.MR执行流程
(1).客户端提交一个mr的jar包给JobClient
(2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId
(3).client将jar包写入到HDFS当中
(4).开始提交任务(任务的描述信息,不是jar)
(5).JobTracker进程初始化任务
(6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
(7).TaskTracker通过心跳机制领取任务
(8).下载所需的jar,配置文件等
(9).TaskTracker启动一个java child进程,用来执行具体的任务(MapperTask或ReducerTask)
(10).将结果写入到HDFS当中
4.maptask分片
片大小:splitSize = max(minsize,min(maxsize,blockSize));
minsize:mapred.min.split.size(配置文件中设置默认没设置)
maxsize:mapred.max.split.size(配置文件中设置默认long类型的最大值263-1)
默认一般一个block块对应一个map的分片(有些文件进行压缩后不支持分块,上传到hdfs也是一块不会被拆分)
如果想多个map分片对应一个分块就要设置mapred.max.split.size
5.hadoop集群的6个配置文件
第一个:hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
第二个:core-site.xml
<!-- 指定HDFS的namenode的通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-1.1.2/tmp</value>
</property>
第三个:hdfs-site.xml
<!-- 配置HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
第四个:mapred-site.xml
<!-- 指定jobtracker地址 -->
<property>
<name>mapred.job.tracker</name>
<value>hadoop01:9001</value>
</property>
第五个:masters(指定secondarynamenode地址)
hadoop01
第六个:slaves
hadoop02
hadoop03
6.动态添加一台节点
6.1修改主机名 vim /etc/sysconfig/network
6.2使用root用户登录,右键点击右上角网络,选择Edit connections,修改Auto eth1,设置为manual方式,添加IP,NETMASK,GAYEWAY,再点apply
6.3关闭防火墙 service iptables stop ;chkconfig iptables off 重启机器:reboot
6.4配置主节点和新添加节点的hosts文件
6.5分别启动datanode和tasktracker
hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker
6.6在主节点上即namenode所在节点上运行命令刷新
hadoop dfsadmin -refreshNodes
7.hadoop集群管理相关命令
hadoop安全模式:Safe mode is ON(可以读取文件,但是不可以向HDFS写入文件)
hadoop dfsadmin -safemode enter(进入安装器模式) / leave(离开安全模式) / get(获取当前状态) / wait(竟然等待状态)
hadoop mradmin -safemode enter / leave / get / wait
二.配置mysql远程连接
GRANT ALL PRIVILEGES ON database.* TO 'root'@'192.168.1.201' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
三.Sqoop总结
注:将数据库连接驱动拷贝到$SQOOP_HOME/lib里
第一类:sqoop和hdfs交互
数据库中的数据导入到HDFS上
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --columns 'id, account, income, expenses'
指定输出路径、指定数据分隔符
sqoop import --connect jdbc:mysql://192.168.35.100:3306/database --username root --password 123 --table trade_detail --target-dir '/sqoop/td' --fields-terminated-by '\t'
指定Map数据 -m
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2
增加where条件, 注意:条件必须用引号引起来
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 --table trade_detail --where 'id>3' --target-dir '/sqoop/td2'
增加query语句(使用 \ 将语句换行)
sqoop import --connect jdbc:mysql://192.168.1.10:3306/database --username root --password 123 \
--query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS' --split-by trade_detail.id --target-dir '/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\即\$CONDITIONS
如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上
将HDFS上的数据导出到数据库中(结尾的-m 1设置执行的map个数为1)
sqoop export --connect jdbc:mysql://192.168.8.120:3306/database --username root --password 123 --export-dir '/td3' --table td_bak -m 1
第二类:sqoop和hive交互
sqoop import --connect jdbc:mysql://192.168.35.100:3306/database --username root --password 123 --table user_info --hive-import --hive-overwrite --hive-table user_info --fields-terminated-by '\t'
四.ZooKeeper总结
1.应用场景(简单介绍7个场景)
数据发布与订阅(配置中心)、负载均衡、命名服务、分布式通知/协调、集群管理与Master选举、分布式锁、分布式队列
2.zk要部署奇数个
3.注意事项(特别要注意,否则启动报错)
在(dataDir=/cloud/zookeeper-3.4.5/tmp)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
echo "1" > myid
将配置好的zk拷贝到其他节点在其他节点上一定要修改myid的内容
在hadoop02应该讲myid的内容改为2 (echo "2" > myid)
在hadoop03应该讲myid的内容改为3 (echo "3" > myid)
五.HBase总结
简介:
建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)
和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
HBase中的表一般有这样的特点:
1) 大:一个表可以有上亿行,上百万列
2) 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
3) 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
1.HBase启动顺序
启动hadfs start-dfs.sh -->启动zk zkServer.sh start --> 启动hbase start-hbase.sh -->启动第二个hbase master: hbase-daemon.sh start master
2.不要忘记修改hbase-env.sh
export HBASE_MANAGES_ZK=false
//告诉hbase使用外部的zk
六.Flume总结
配置HDFS Sink时首先需要将$HADOOP_HOME/hadoop-core-1.0.4.jar和$HADOOP_HOME/lib/commons-configuration-1.6.jar拷贝到$FLUME_HOME/lib/下
启动(切换到flume的安装路径下启动)
#将日志信息打印到控制台
bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties -Dflume.root.logger=INFO,console
#将产生的日志信息保存到日志文件中,并后台运行
bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties >logs/flume_log.log &
七.hive的总结就不赘述了,专门写了博文进行介绍
相关文章推荐
- Hadoop生态圈常用命令
- linux下sed的使用(下)
- hadoop0.20.2:The temporary job-output directory doesn't exist!
- linux下sed的使用(中)
- 运维自动化之puppet类(4)
- linux下sed的使用(上)
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- arm-Linux汇编语法及它和ADS汇编转换的问题
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- opencv批量读图像序列
- linux中mv命令使用详解(移动文件或者将文件改名)
- eclipse tomcat deploy path
- OpenCV 函数从易到难
- 运维自动化之puppet条件判断(3)
- Linux常用vi命令
- opencv入门Vec3f
- linux中rmdir命令使用详解(删除空目录)
- linux内核线程的创建与销毁
- FS_S5PC100平台上Linux Camera驱动开发详解
- poj1703 Find them, Catch them