前言
本学期开了云计算概论这门课,前段时间简单学习了MPI的并行计算的一些东西,现在了解一下Hadoop,当然课堂上讲的东西是非常有限的,今天终于装好了为分布式的Hadoop,而且跑了最简单的例子。
三驾马车
说起Hadoop,不得不说谷歌。Google是大数据时代的奠基者,早在零几年,谷歌发表了著名的三篇论文。这包括Mapreduce编程模型、文件系统GFS以及列式存储BigTable,谷歌虽然没有开源,但是在论文中介绍了相关技术。所以Apache开源的Hadoop和Hbase,其中Hadoop的Mapreduce和HDFS的思想来源于谷歌mapreduce和GFS论文,而hbase来源于谷歌的Bigtable论文。
我们采用廉价的商用计算机集群构建分布式文件系统,容错性是一个重要的指标。HDFS提供高容错性。
Hadoop安装测试
网上有很多安装教程,在这里总结一下吧
- 配置ssh免密登陆
- 下载jdk&hadoop
- 安装jdk,解压jdk压缩包,将jdk目录添加到PATH
- 安装Hadoop,解压Hadoop,修改XML配置文件
- 将Hadoop下的指定文件添加到CLASSPATH
- 启动hadoop测试。
- 关于编程,IntelliJ在业界被公认为最好的java开发工具之一。可以新建maven工程进行编程,非常方便。
下面是一在hdfs写文件的一个例子,至此,我又多会了另一种形式的HelloWorld。
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Write{
public static void main (String[] args) throws IOException
{
Configuration conf=new Configuration();
Path inFile=new Path("/user/qile/input/file3.txt");
FileSystem hdfs=FileSystem.get(conf);
FSDataOutputStream os=hdfs.create(inFile);
os.writeUTF("Hello world!\n");
os.flush();
os.close();
}
}
对了,我们可以在默认端口8088和9870分别看到节点和hdfs的一些状态信息。
因为我装的是伪分布式,所以显示只有一个活跃节点。
刚才写入的file3.txt
总结
网上有一句话,说全球很多技术都落后于谷歌,而谷歌自身的技术也在影响全球。要知道,谷歌的三篇论文发布时间是十几年之前。而现在,除了谷歌,还有阿里等也肯定有自己一套系统,不然我们双十一怎么过呢!