1. 下载Hadoop
到官网下载Hadoop:
http://hadoop.apache.org/#Download+Hadoop
这里我使用的是hadoop-2.6.5.tar.gz版本。
2. 安装Hadoop
直接将压缩包解压到目标路径(我选择安装在'/opt'路径下):
sudo tar -zxvf hadoop-2.6.5.tar.gz -C /opt
复制代码
3. 创建Hadoop用户
为了方便管理、配置hadoop,我们最好在ubuntu中创建一个hadoop用户:
sudo useradd -m hadoop -s /bin/bash
复制代码
并设置密码:
sudo passwd hadoop
复制代码
然后为hadoop用户添加管理员权限:
sudo adduser hadoop sudo
复制代码
最后,“注销”用户选择“hadoop”用户重新登陆。
4. 安装SSH、配置SSH无密码登陆
Hadoop中会使用到SSH登陆,所以我们应该安装SSH远程登陆软件,为了方便起见并选择无密码登陆:
sudo apt-get install openssh-server
复制代码
安装完成后,登陆本机:
ssh localhost
复制代码
但是这样每次都需要输入密码,方便起见可以设置:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
复制代码
5. 安装Java环境
由于Hadoop是基于Java开发的,所以要求配置好Java环境,具体配置过程可参见:
http://www.jianshu.com/p/abce8e64bb56
6. 配置Hadoop环境
(1). 首先更改权限,这样hadoop用户可以直接对该文件夹中的文件进行操作:
sudo chown -R hadoop ./hadoop-2.6.5 //"hadoop"是指用户名,"./hadoop-2.6.5"是指被更改权限的文件夹
复制代码
(2). 配置环境变量
sudo gedit /etc/profile
复制代码
添加:
#java
export JAVA_HOME=/opt/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#hadoop
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$PATH
复制代码
更新配置文件使生效:
source /etc/profile //或者重启电脑
复制代码
(3). 因为Hadoop默认是“单机模式”,可以直接通过下面的命令启动Hadoop:
cd /opt/hadoop-2.6.5 //进入hadoop根目录
mkdir ./input //创建输入文件夹
cp ./etc/hadoop/*.xml ./input //将某些文件复制到输入文件夹
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+' //执行
cat ./output/* //查看运行结果
复制代码
(4). 但是记得要删除output输出目录,Hadoop不会覆盖输出目录,否则会出错:
rm -r ./output
复制代码
下面主要介绍下“伪分布式Hadoop的配置”。
7. 配置伪分布式Hadoop环境
(1). 配置启动文件,否则会出现找不到JAVA_HOME错误
首先进入路径:"/hadoop-2.6.5/etc/hadoop/"
cd /opt/hadoop-2.6.5/etc/hadoop/
复制代码
配置hadoop-env.sh:
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/opt/jdk1.8.0_144 //根据自己的JAVA_HOME填写
复制代码
配置yarn-env.sh:
export JAVA_HOME=/opt/jdk1.8.0_144 //根据自己的JAVA_HOME填写
复制代码
(2). 修改*.xml配置文件
首先进入路径:"/hadoop-2.6.5/etc/hadoop/"
cd /opt/hadoop-2.6.5/etc/hadoop/
复制代码
修改配置文件core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-2.6.5/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
复制代码
修改hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.6.5/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-2.6.5/tmp/dfs/data</value>
</property>
</configuration>
复制代码
修改mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
复制代码
修改yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>127.0.0.1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>127.0.0.1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>127.0.0.1:8031</value>
</property>
</configuration>
复制代码
8. 启动Hadoop
(1). 格式化namenode
./bin/hdfs namenode -format
复制代码
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。 (2). 启动NameNode 和 DataNode 守护进程
./sbin/start-dfs.sh
复制代码
(3). 启动ResourceManager 和 NodeManager 守护进程
./sbin/start-yarn.sh # 启动YARN
./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行
复制代码
(4). 验证开启成功
jps
复制代码
输出如下:
6338 NameNode
7668 Jps
7541 NodeManager
7237 ResourceManager
6651 SecondaryNameNode
6477 DataNode
复制代码
(5). 创建hdfs输入文件夹 与单机模式不同,伪分布式Hadoop使用的是hdfs的文件系统,而不是Hadoop根路径下的"/input"文件夹,所以我们需要用Hadoop的工具创建hdfs类型的输入文件夹:
hadoop fs -mkdir -p /user/hadoop //创建用户目录
复制代码
创建输入文件夹:
hadoop fs -mkdir /user/hadoop/input //创建输入文件夹
hadoop fs -put ./etc/hadoop/*.xml input //复制到输入文件夹
hadoop fs -ls input //查看输入文件夹内容
复制代码
(6). 运行:
hadoop jar /opt/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount input output
复制代码
- 不启动 YARN 需重命名 mapred-site.xml
如果不想启动 YARN,务必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用时改回来就行。否则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template。 将运行结果取回到本地并删除输出文件夹(防止报错):
rm -r ./output # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*
hadoop fs -rm -r output # 删除 output 文件夹
复制代码
(7). web查看任务窗口:
http://localhost:8088/cluster ##9. 关闭Hadoop
./sbin/stop-all.sh
复制代码