hadoop

openstack:云栈
keystone:编录,认证(token,identity)
Nova:(compute,scheduler,network,volume,console,consoleauth)
glance:(image as a service)
swift:(object store),分布式文件系统
horizon:dashboard
cinder:(nova-volume)
quantum:(nova-network)open vswitch

消息队列:异步协作
请求服务:生产者
提供服务:消费者

高级消息队列协议(advanced message queue protocol):rabbitmq,zeromq,qpid

cloudstack:Apache
opennebular
eucaptulys

iass,paas,saas
openstack:hypervisor

200GB:
2012-11-11:
100W,

文本文件:

RDBM(关系型数据库表)
字段、数据类型、约束
结构化数据

     google:
          20亿:
              ab:100

非结构化数据(unstructured data)
PageRank(页面排序算法)

    半结构化数据(semi-structured):XML(扩展标记语言),json

Hadoop官方网站:hadoop.apach.org

Hadoop三种模式:
本地模式
伪分布式模式
完全分布式模式

Facebook:一个社交站点 PV,500亿:

  化整为零:
       500G:500*1G
         并行处理:将一个大问题切割成多个小问题
          OLAP:数据挖掘

机器学习:deep learning(深度学习)

分布式文件系统,Google:20亿

并行处理:
处理:
keyword:次数
A:10
C:67
key-value pair
存储:

map reduce:
函数式编程API
运行框架

map(相当于寻找生成键值,并且把相同的键值发送到相同的reduce) reduce(相当于把寻找的结果合并起来):函数式编程API
运行框架

实时处理:即时结果
批处理:在后台运行一段无法预估的时长

mapreduce:simplified data processing on large clusters

2003:the Google file system:Google的分布式文件系统

Lucene

nutch

Hadoop:
DFS --》 HDFS
mapreduce:
1.编程模型
2.运行框架
3.mapreduce编程思想的具体实现

http协议,用http软件来具体实现

Hadoop=hdfs+mapreduce
Hadoop就是两个集群合并在一起的:HDFS集群和mapreduce集群(这两个是核心)

jobtracker:mapreduce的控制节点,来决定在哪些节点上启动多少个map和reduce任务(相当于进程)

HDFS的两个节点
namenode:简称NN
datanode:简称DN

mapreduce两个节点
jobtracker(jt节点)处理用户请求,以及指挥启动map,是一个调度器
tasktracker(tt节点)具体运行map和reduce的任务

slot:插槽

page1:1
page2:1
page1:1
page2:1
page3:1
page3:1

page1:2
page2:2
page3:2

Hadoop运行框架:
调度
数据和代码协同工作
同步
错误和故障处理
combiner:把相同的键值先合并起来在发送到reduce中去
partitioner(起分组作用):决定把哪个键值发到哪个reduce中去,以及决定要启动几个reduce

一个Hadoop中可以没有reduce,但是一定要有map,因为键值就是我们需要的最终的结果

hdfs:
1.hdfs设计用来存储大文件,对海量小文件的存储不太适合
2.hdfs是用户空间的文件系统
3.hdfs不支持修改,新版本支持追加
4.不支持挂载,并能通过系统调用进行访问,只能使用专用访问接口,如专用命令行工具、API

Facebook:scribe,flume,把数据导入到hdfs中去

nosql:稀疏格式存储方案,只能进行创建,修改,更新,删除操作

hive:类似于SQL,存储,来辅助mapreduce工作,主要处理用户的sql查询操作,避免用户自己写map,reduce函数,相当于mapreduce前置端口

hbase:主要用来修改数据,存储,来辅助mapreduce工作,运行在hdfs上面

R语言,RHadoop:专用于Hadoop的R语言

rdbms--》sqoop--》hbase--》HDFS

mapreduce:SQL,存储
HBase:修改,存储

学习Hadoop
首先学习安装配置hdfs
在学习安装配置mapreduce
其次hbase
然后hive
然后sqoop
最后flume/scribe/chukwa等其他的工具

hdfs:三种模式
本地模式
伪分布式(使用一个节点就可以)
完全分布式(四个以上的节点)
SaaS

存储云:

收集分布式日志的工具:
flume(ASF)
shukwa(ASF)
scribe(Facebook)

Hadoop:
mapreduce
编程框架
运行环境
HDFS

client连进来,jobtracker来决定启动多少了map以及reduce(reduce如果程序员不规定则默认由jobtracker决定)进程,并且jobtracker还是一个调度器,来决定调度到哪个map上面,map处理之后,经过分组排序送到给reduce,最终reduce变化成一个一个part-r-0000,part-r-0001,等等

RDBMS
行式数据库

BigTable,HBase(Data source,Date sink)
列式数据库

日志收集器:主要把其它服务例如web等日志收集到hdfs之中,进行分析
flume,由Apache提供
chukwa,由Apache提供
scribe,由Facebook提供

pig与Hive以及crunch作用一样,主要是为了简化写mapreduce函数一个编程接口

Avro:主要把一些非序列化的数据变成序列化,也可以把序列化数据变成非序列化数据通常与日志收集器结合起来使用

sqoop:主要转变关系型数据库(RDBMS)

mahout:机器学习工具,实现智能化

zookeeper:相当于高可用集群的信息管理层,协调各个节点之间运行

Hadoop:并行处理集群

CDH网站上整合了Hadoop各个组件,建议在此网站上下载Hadoop

安装伪分布式Hadoop
一个最基本的Hadoop有五个进程:
jobtracker
tasktracker
namenode
sencondarynamenode
datanode

rpm -ivh jdk-7u5-linux-i586.rpm

vim /etc/profile.d/java.sh
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

vim /etc/profile.d/hadoop.sh
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH_HOME/bin:$PATH
export HADOOP_HOME PATH

tar -zxvf hadoop-0.20.2-chd3u5.tar.gz -C /usr/local/

cd /usr/local
ln -sv hadoop-0.20.2-chd3u5 hadoop

java -version
hadoop version

cd /usr/local/hadoop/
ls bin/
ls conf/

useradd hduser
chown -R hduser.hduser /usr/local/hadoop/
su - hduser
cd /usr/local/hadoop
cd conf
cat masters
cat slaves

mkdir /usr/local/hadoop/temp -pv
chown -R hduser.hdsuer /usr/local/hadoop/temp

以下配置及操作均在hduser用户下进行
vim core-site.xml(主配置文件)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/temp/</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
</property>
</configuration>

vim mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</propery>
</configuration>

vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<vaule>1</value>
</property>
</configuration>

ssh-keygen -t rsa-P ''
ssh-copy-id -i .ssh/id_rsa.pub hduser@localhost

格式化hdfs
hadoop namenode -format

start-all.sh
jps
cd /usr/lcoal/hadoop/logs
tail -f hadoop-hduser-namenode-node1.magedu.com.log

如果启动报JAVA_HOME is not set 请改Hadoop配置文件中hadoop-env.sh,改成绝对路径:export JAVA_HOME=/usr/java/jdk1.6.0_45

hadoop fs -mkdir test
hadoop fs -ls
hadoop fs -put text.txt test/
hadoop fs -ls test/
hadoop job -list all
hadoop fs -put test2.txt test/
hadoop jar /usr/lcoal/hadoop/hadoop-examples-0.20.2-cdh3u5.jar wordcount test wordcount-out
hadoop job -list all
hadoop fs -ls wordcount-out
hadoop fs -cat wordcount-out/part-r-0000

hadoop dfsadmin
hadoop dfsadmin -report
hadoop fsck -openforwrite -files
hadoop fsck -openforwrite -files -blocks -locations

安装完全分布式Hadoop:三个节点配置文件一样
第一个节点运行:namenode jobtracker(master)
第二个节点运行:secondnamenode(master:一般情况下secondnamenode和namenode是运行在一个节点上的这里分开了,防止单点故障)
第三个节点运行:datanode tasktracker(slave)

每个主机进行各个主机名解析,以及多机互信,时间保持一致

node1:172.16.100.11:

rpm -ivh jdk-7u5-linux-i586.rpm

vim /etc/profile.d/java.sh
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

vim /etc/profile.d/hadoop.sh
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH_HOME/bin:$PATH
export HADOOP_HOME PATH

tar -zxvf hadoop-0.20.2-chd3u5.tar.gz -C /usr/local/

cd /usr/local
ln -sv hadoop-0.20.2-chd3u5 hadoop

useradd hduser
password hduser
chown -R hduser.hduser /usr/local/hadoop/

su - hduser
java -version
hadoop version

cd /usr/local/hdoop/conf

vim masters
172.16.100.12(这里填写的是secondnamenode节点的IP)

vim slaves
172.16.100.13

mkdir /hadoop/temp -pv
chown -R hduser:hduser /hadoop/temp/

vim core-site.xml
<configuration>
<property>
<name>fs.default.name</name> <value>hdfs://172.16.100.11:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/temp</value>
<property>
</configuration>

vim mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>172.16.100.11:8021</value>
</property>
</configuration>

vim hdfs-site.xml
<configuration>
<property>
<name>dfs.relication</name>
<value>1</value>(slave的节点数量)
<description>The actual number of replications can be specified when the file is created.</description>
</property>

<property>
<name>dfs.data.dir</name>
<value>/hadoop/data</value>
<final>ture</final>
<description>The directories where the datanode stores blocks.</description>
</property>

<property>
<name>fs.checkpoint.dir</name>
<value>/hadoop/namesecondary</value>
<final>ture</final>
<description>The directories where the secondarynamenode stores checkpoints.</description>
</property>

</configuration>

scp *-site.xml 172.16.100.12:/usr/local/hadoop/conf/ 172.16.100.13:/usr/local/hadoop/conf/
hadoop namenode -format

start-all.sh
jps

node2:172.16.100.12

rpm -ivh jdk-7u5-linux-i586.rpm

vim /etc/profile.d/java.sh
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

vim /etc/profile.d/hadoop.sh
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH_HOME/bin:$PATH
export HADOOP_HOME PATH

tar -zxvf hadoop-0.20.2-chd3u5.tar.gz -C /usr/local/

cd /usr/local
ln -sv hadoop-0.20.2-chd3u5 hadoop

useradd hduser
password hduser

chown -R hduser.hduser /usr/local/hadoop/

mkdir -pv /hadoop/temp
chown -R hduser.hduser /hadoop/temp/

su - hduser
java -version
hadoop version

node3:172.16.100.13

rpm -ivh jdk-7u5-linux-i586.rpm

vim /etc/profile.d/java.sh
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

vim /etc/profile.d/hadoop.sh
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH_HOME/bin:$PATH
export HADOOP_HOME PATH

tar -zxvf hadoop-0.20.2-chd3u5.tar.gz -C /usr/local/

cd /usr/local
ln -sv hadoop-0.20.2-chd3u5 hadoop

useradd hduser
passwrd hduser

chown -R hduser.hduser hdoop/

su - hduser
hadoop version
java -version

mkdir -pv /hadoop/temp/
chown -R /hadoop/temp/

hadoop fs -mkdir wc-in
hadoop fs -put /etc/rc.d/rc.sysinit wc-in
hadoop fs -put /etc/rc.d/init.d/functions wc-in
hadoop jar /usr/local/hadoop/hadoop-examples-0.20.0-cdh3u5.jar wordcount wc-in wc-out

存储云:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章