Hadoop平台搭建
Hadoop实现了一个分布式文件系统HDFS。(存储数据的系统大量的数据)
HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。
Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。(提供处理数据的算法进行处理数据)
Hadoop充分利用集群(就是将多台计算机弄成一个大的群体)的威力进行高速运算和存储。
Hadoop架构
HDFS的体系:
Namenode()是HDFS的守护进程,核心,记录文件如何划分,存储,对i/o,内存进行管理,hadoop从namenode知道文件存在哪些节点,然后和集群打交道,但是它是单节点,一旦奔溃则集群奔溃,每个集群有一个
Secondary Namenode:namenode会把信息给他,然后namenode奔溃时补救,人工介入解决奔溃,每个集群一个
Master不一定唯一,但是是运行namenode,secondary namenode或jobtracker,
slave是运行datanode,tasktracker
JobTracker:每个集群只有唯一的一个,用于处理用户提交的任务的后台程序,分配任务,知道任务完成情况
TaskTracker:位于Slave上,管理各节点上的任务,并行Map或reduce任务,与jobTracker交互
Hadoop的三种运行方式:
1.单机模式只是用于了解hadoop,单机就是一台机器。
2.伪分布也是单机其实,但是安装和完全分布式一样
3.完全分布式要求至少三个几点,不然构不成集群(如果为三个节点时,这时候就是三个节点都装hadoop,但是一个节点充当master,用于管理其他节点,其他节点充当slave)运行的时候就是,其他的节点的请求会给master,master会给slave分配处理数据的任务,每个一小部分,slave运行map-reduce算法来处理,结果返回master,然后master给用户。
主要是要研究map-reduce的算法。Map-reduce的算法就是分布式计算的,是先将问题map映射到下部分,然后进行并行运算,然后reduce合成后就可以。有时候要进行多次的map和reduce。
截取论文中:Hadoop是由Apache基金会开发并开源的分布式系统基础架构。它的核心功能有两个,文件的分布式存储和对分布在集群中的文件的并行处理。这两个功能分别由HDFS(Hadoop Distributed File System,分布式文件系统)和MapReduce编程模型实现。HDFS提供了友好的命令行工具,供用户对文件进行常规操作。MapReduce则提供了底层的运行环境和开发接口,开发人员调用Hadoop的API,实现所需的业务逻辑,将工程打包成jar包后即可在集群上运行。
HDFS是一个安全高效的分布式存储系统,它对硬件要求很低,用多节点备份的方法保证数据安全和容错性,因而可以部署在低廉的硬件上。Hadoop用HDFS存储从Scribe传送来的日志,并运行MapReduce并行处理程序。过程代码的开发服从MapReduce框架。它按行都去处理日志文件,当读到满足条件的记录时,例如包含字符串“interest_from”,就会解析该行并做指定的计数和记录。
HDFS采用master/slave的结构,其中master为Namenode节点,slave为Datanode节点。在集群中,Namenode只有一个,它作为管理者负责管理整个文件系统的命名空间、协调并记录文件的各个数据块在集群中的位置、在出现读写故障时根据日志信息对文件进行重建。开发人员可以在HDFS上对文件进行诸如建立、删除、移动、重命名等操作。为了防止单点故障,系统中还设置一个Secondary Namenode,该节点会同步更新Namenode上的数据,当Namenode失效时,系统会启用Secondary Namenode[10]。
MapReduce也采用Master/Slave结构,其中master上运行jobtracker守护进程,slave上运行Tasktracker守护进程。jobtracker作为管理者,负责调度所有任务,这些任务分布在不同的Tasktracker上,仅完成由Tasktracker指派的任务,并向jobtracker汇报自身任务执行情况。
Ubuntu
hadoop 单机安装与部署
说明:安装hadoop首先要安装java 然后再安装hadoop
安装JAVA
。解压
cd /usr/local
tar -zxvf jdk-7u25-linux-x64.gz
2.配置/etc/profile
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_55
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HONE/jre/bin:$PATH
3.使其生效
source /etc/profile
4.查看JAVA安装是否成功
java -version
安装ssh,免密码登陆。
apt-get install openssh-server 安装ssh
建立 SSH KEY:
$ ssh-keygen -t rsa -P "" (注意不要多加空格或缺少空格)
中途需要安装者选择保存密钥的文件,按回车使用默认的文件就可以了:
Enter file in which to save the key (/root/.ssh/id_rsa):(按回车)
启用SSH KEY:
$ cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
/etc/init.d/ssh reload
reload ssh
ssh localhost
1. 安装配置单机hadoop
1)解压到/opt/hadoop
Java代码
1. $ tar zxvf hadoop-1.2.0.tar.gz
2. $ sudo mv hadoop-1.2.0 /opt/
3. $ sudo chown -R hadoop:hadoop /opt/hadoop-1.2.0
4. $ sudo ln -sf /opt/hadoop-1.2.0 /opt/hadoop
4. 配置 hadoop-env.sh
1)在hadoop/conf 里面hadoop-env.sh增加
Java代码
1. export JAVA_HOME=/usr/jdk1.7.0_25
2. export HADOOP_HOME=/opt/hadoop
3. export PATH=$PATH:/opt/hadoop/bin
5.配置文件
1)編輯 /opt/hadoop/conf/core-site.xml
Java代码
1. <configuration>
2. <property>
3. <name>fs.default.name</name>
4. <value>hdfs://localhost:9000</value>
5. </property>
6. <property>
7. <name>hadoop.tmp.dir</name>
8. <value>/tmp/hadoop/hadoop-${user.name}</value>
9. </property>
10. </configuration>
2)編輯 /opt/hadoop/conf/hdfs-site.xml
Java代码
1. <configuration>
2. <property>
3. <name>dfs.replication</name>
4. <value>1</value>
5. </property>
6. </configuration>
3)編輯 /opt/hadoop/conf/mapred-site.xml
Java代码
1. <configuration>
2. <property>
3. <name>mapred.job.tracker</name>
4. <value>localhost:9001</value>
5. </property>
6. </configuration>
6.格式化hdfs
Java代码
1. $ cd /opt/hadoop
2. $ source conf/hadoop-env.sh
3. $ hadoop namenode -format
提示信息一大堆...
7. 启动hadoop
Java代码
1. $ sudo ./start-all.sh //在hadoop/bin下执行
8.完成后的测试
Java代码
1. http://localhost:50030/ - Hadoop 管理接口