1、创建hadoop用户
打开终端
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop//为hadoop设置密码
sudo adduser hadoop sudo//为 hadoop 用户增加管理员权限
2、更新apt并安装vim
sudo apt-get update
3、安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆,
Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
ssh localhost #安装后使用命令登录本机,首次登录选择yes需要输入密码hadoop
我们需要配置成SSH无密码登陆,避免多次输入密码
(1.exit # 退出刚才的 ssh localhost
(2.cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
(3.ssh-keygen -t rsa # 会有提示,都按回车就可以
(4.cat ./id_rsa.pub >> ./authorized_keys # 加入授权
4、安装java环境
sudo apt-get install default-jre default-jdk
vim ~/.bashrc #打开当前登录用户的环境变量配置文件.bashrc:
在文件最前面添加如下单独一行(注意,等号“=”前后不能有空格),然后保存退出:
export JAVA_HOME=/usr/lib/jvm/default-java
source ~/.bashrc # 使变量设置生效
执行上述命令后,可以检验一下是否设置正确:
echo $JAVA_HOME # 检验变量值
java -version # 查看版本
5、安装hadoop 2
通过 http://mirrors.cnnic.cn/apache/hadoop/common/下载,
一般选择下载最新的稳定版本即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件。
我们选择将 Hadoop 安装至 /usr/local/ 中:
sudo tar -zxf ~/下载/hadoop-2.6.9.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.9/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
6、Hadoop单机配置(非分布式)
我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,
筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
cd /usr/local/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/* # 查看运行结果
执行成功后,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次。
7、Hadoop伪分布式配置
进入/usr/local/hadoop/etc/hadoop/中ll,对 core-site.xml 和 hdfs-site.xml 文件进行配置
core-site.xml修改如下:
1.
<configuration>
2.
<property>
3.
<name>hadoop.tmp.dir</name>
4.
<value>file:/usr/local/hadoop/tmp</value>
5.
<description>Abase for other temporary directories.</description>
6.
</property>
7.
<property>
8.
<name>fs.defaultFS</name>
9.
<value>hdfs://localhost:9000</value>
10.
</property>
11.
</configuration>
修改配置文件 hdfs-site.xml
1.
<configuration>
2.
<property>
3.
<name>dfs.replication</name>
4.
<value>1</value>
5.
</property>
6.
<property>
7.
<name>dfs.namenode.name.dir</name>
8.
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
9.
</property>
10.
<property>
11.
<name>dfs.datanode.data.dir</name>
12.
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
13.
</property>
配置完成后,执行 NameNode 的格式化:
./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,
若为 “Exitting with status 1” 则是出错。
接着开启 NameNode 和 DataNode 守护进程。
./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件
若出现如下SSH提示,输入yes即可。
8、运行Hadoop伪分布式实例
./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
复制完成后,可以通过如下命令查看文件列表:
./bin/hdfs dfs -ls input
伪分布式运行 MapReduce 作业的方式跟单机模式相同,
区别在于伪分布式读取的是HDFS中的文件
(可以将单机步骤中创建的本地 input 文件夹,输出结果 output
文件夹都删掉来验证这一点)
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
查看运行结果的命令(查看的是位于 HDFS 中的输出结果):
./bin/hdfs dfs -cat output/*
这里我们的hadoop已经安装完成了。
若要关闭hadoop,则运行
./sbin/stop-dfs.sh