第一周
一头牛拉不动车的时候,我们用两头牛一起拉,而不是养一头更大的牛。——Hadoop
Hadoop:作为关系数据库管理系统的一种补充,它以批处理的方式对数据集进行分析,适合于需要分析整个数据集的问题。
背景:
- 数据量巨大——需要大容量的数据库进行存储和处理。
- 硬盘传输速率的增长慢于硬盘容量的增长——需要多个磁盘并行处理。
- 硬盘寻址时间的增长慢于硬盘传输速率的增长——在数据库中加上更多磁盘来做大规模分析是不明智的。
与传统的关系数据库相比:
- 可以处理的数据大小为PB级。vs GB
- 更适合一次大量更新后多次读入。vs 多次读写,持续更新
- 如果要进行扩展,复杂度的增长是线性的。vs 非线性
- 集成度低,逻辑较不复杂。vs集成度高
MapReduce:一种线性可伸缩的、并行计算的编程模型。主要用于作业调度。
============================================================================================================
配置开发环境时用到的资料
*《Hadoop开发者入门专刊》
一些经验总结
- JDK要安装在无空格和特殊字符的路径下。安装后要配置系统JAVA_HOME和PATH。在命令行下运行javac,要能找到这个命令。
- Cygwin主目录下的配置文件/etc/profile也要进行配置,其中包括JAVA_HOME HADOOP_HOME 语言等。修改配置文件要用vim,用记事本会出奇怪的错误。配置文件中的路径要用Linux风格,非Cygwin根目录下的文件地址用这种形式:/cygdrive/c/java/jdk1.6.0_25 。
- Cygwin用来在windows下使用Bash。在域内电脑上安装时要选择用IE代理设置连接网络(第二项),而不能直接连接,否则会无法从镜像下载文件。另外,Cygwin下的bin目录与user/bin目录也要添加到系统PATH。
- 安装好sshd服务以后,要用域内的账户身份启动SYGWIN sshd服务,直接启动服务会不停提示输密码。具体设置方法是“计算机管理-服务-右键SYGWIN sshd服务-属性-登录选项卡-此账户-浏览-位置选dangdang.com-高级-立即查找-找到自己点确定-输入登录密码(就是开机密码)两遍-确定-启动服务”。如此,在用ssh连接localhost时输入登录密码,即可连接主机。如果登录密码设置得与开机密码不同,会提示登录失败无法启动服务。
- 成功用登录密码连接主机以后,再用key-gen什么的配置公私密钥。以后不必再输密码,安全性高。
- 启动Hadoop时遇到连接不上之类的问题,参见上边第三个链接。
- 用Eclipse调试程序时,要导入hadoop/hadoop-x.x.x-core.jar以及hadoop/lib/目录下所有jar包。
- 例程运行之前,先右键工程-run as-open run dialog-arguments选项卡,在program argument中配置程序的输入输出文件路径,用空格分开;在VM argument中配置虚拟机内存,如-Xmx256m。