开发环境搭建
安装虚拟机
安装操作系统
ubuntu-16.04-desktop-amd64
安装虚拟机和操作系统的教程可以参考之前的Blog: Ubuntu系统初识
下载Hadoop
如果你在官网上下载比较慢的话可以去这个网站看下
http://mirror.bit.edu.cn/apache/hadoop/common/
我们选择最新的稳定版本2.7.3
下载速度非常快
安装Hadoop
首先解压hadoop文件到/usr/local 路径下,并且重命名为hadoop
1 | sudo tar -zxvf hadoop2.7.3.tar.gz /usr/local hadoop |
修改文件权限
1 | cd /usr/local/hadoop |
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
1 | cd /usr/local/hadoop |
配置Hadoop环境变量(由于小白还用不惯vim, 暂时使用gedit命令)
1 | sodu gedit ~/.bashrc |
在里面加入
1 | export HADOOP_HOME=/usr/local/hadoop |
然后输入以下命令是环境变量生效
1 | source ~/.bashrc |
在Linux中,~目录表示主目录。比如你要到下载文件夹下,就可以输入
1 | cd ~/Downloads |
安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
1 | sudo apt-get install openssh-server |
安装后,可以使用如下命令登陆本机:
1 | ssh localhost |
但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中
1 | exit # 退出刚才的 ssh localhost |
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了
环境配置
Hadoop单机配置(非分布式)
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
现在我们可以执行例子来感受下 Hadoop 的运行。
官网上给了一个比较简单的例子
1 | mkdir input |
Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
使用以下配置文件
etc/hadoop/core-site.xml:
1 | <configuration> |
etc/hadoop/hdfs-site.xml:
1 | <configuration> |
Hadoop配置文件说明:
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,执行 NameNode 的格式化:
1 | ./bin/hdfs namenode -format |
如果刚才有在环境变量中加入 export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH,关于Hadoop的所有命令均可以直接使用,而不需要加入路径信息。
上述命令可以写成
1 | hdfs namenode -format |
接着开启 NameNode 和 DataNode 守护进程
1 | ./sbin/start-dfs.sh #如果已经开启,请先使用stop-dfs.sh关闭 |
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

若要关闭 Hadoop,则运行
1 | ./sbin/stop-dfs.sh |
下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以
启动YARN
YARN 的全称是“Yet Another Resource Negotiator”, 也就是新一代的MapReduce 框架
YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性。
首先修改配置文件 mapred-site.xml,在源文件中只找到了“mapred-site.xml.template” 文件,所以我们将其复制并重命名
1 | sudo cp ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml |
然后用个gedit进行编辑
1 | sudo gedit ./etc/hadoop/mapred-site.xml |
1 | <configuration> |
接着修改配置文件 yarn-site.xml:
1 | <configuration> |
然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh):
1 | ./sbin/start-yarn.sh # 启动YARN |
启动 YARN 之后可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster

但 YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了
如果不想启动 YARN,务必把配置文件 mapred-site.xml 删除,需要用时再重新cp。
否则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template。
关闭 YARN 的脚本如下:
1 | ./sbin/stop-yarn.sh |
HBase
简介
HBase是一个分布式,版本化,面向列的数据库,构建在 Apache Hadoop和 Apache ZooKeeper之上。
HBase 官方文档
安装HBase
下载解压到 /usr/local/hbase
配置HBase环境变量
1 | export HBASE_HOME=/usr/local/hbase |
修改配置文件 hbase-site.xml
1 | cd $HBASE_HOME/conf |
1 | <configuration> |
修改启动文件 hbase-env.sh
1 | export JAVA_HOME=/usr/local/jdk |
一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。
默认的情况下Hbase会管理一个zookeep集群。这个集群会随着Hbase的启动而启动。
conf/hbase-env.sh里面的 “HBASE_MANAGES_ZK=true” 表示作用是让Hbase启动的时候同时也启动zookeeper。
启动HBase
1 | cd $HBASE_HOME |
启动HBase之后可以通过 Web 页面查看运行状况: http://localhost:16010/master-status
HBase shell操作
用shell连接你的HBase
1 | ./bin/hbase shell |
创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值。
1 | hbase(main):003:0> create 'test', 'cf' |
以上我们分别插入了3行。第一个行key为row1, 列为 cf:a, 值是 value1。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a.
检查插入情况.
Scan这个表,操作如下
1 | hbase(main):007:0> scan 'test' |
Get一行,操作如下
1 | hbase(main):008:0> get 'test', 'row1' |
disable 再 drop 这张表,可以清除你刚刚的操作
1 | hbase(main):012:0> disable 'test' |
关闭shell
1 | hbase(main):014:0> exit |
总结
如果按照上诉方法搭建好Hadoop相关环境,在重启电脑后,可以用以下命令迅速启动所有程序。
1 | hdfs namenode -format |