环境
一台ubuntu 14.04虚拟机。
Hadoop版本:2.6.0。
增加用户
为了隔离Hadoop和其它软件,可以新建一个用户hduser和用户组hadoop来专门运行Hadoop:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
配置SSH免秘钥登陆
Hadoop使用SSH管理节点,需要为相关的远程机器和本机配置SSH免密码登陆。
首先,生成SSH秘钥,生成的私钥文件默认位置是~/.ssh/id_rsa.pub:
ssh-keygen -t rsa -P ""
将私钥写入~/.ssh/authorized_keys:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
尝试使用ssh登陆localhost,应该不再需要输入密码:
ssh localhost
准备依赖软件
确保本机上安装有JDK。安装JDK:
sudo apt-get update
sudo apt-get install default-jdk
确保安装节点上有ssh,且sshd已经运行。安装ssh:
sudo apt-get install ssh
安装rsync:
sudo apt-get install rsync
安装Hadoop
下载Hadoop安装文件:
>
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
解压缩安装包:
>
tar xfz hadoop-2.6.0.tar.gz
设置Hadoop根路径环境变量。本次安装路径为/usr/local/hadoop,后续的一些命令会使用到该路径:
export HADOOP_HOME=/usr/local/hadoop
移动安装包到Hadoop根路径:
sudo mv hadoop-2.6.0 $HADOOP_HOME
将安装目录的属主修改为hduser:
sudo chown hduser $HADOOP_HOME
配置Hadoop
1. 设置JAVA_HOME环境变量
通过以下命令,可以获知JAVA_HOME环境变量的值:
update-alternatives --config java
在本机上显示结果如下:
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Nothing to configure.
那么JAVA_HOME应该为/jre/bin/java前面的部分,也即:
/usr/lib/jvm/java-7-openjdk-amd64
2. 配置./bashrc
我打算将相关路径写到.bashrc下,这样,登陆用户时,就会自动加载。使用VIM编辑.bashrc:
vim ~/.bashrc
在.bashrc中添加相关环境变量:
#HADOOP export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" |
应用环境变量:
source ~/.bashrc
3. 配置$HADOOP_HOME/etc/hadoop/hadoop-env.sh
编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件,设置JAVA_HOME:
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
找到其中的JAVA_HOME变量,修改为:
>
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
4. 配置$HADOOP_HOME/etc/hadoop/core-site.xml
编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件:
sudo vim $HADOOP_HOME/etc/hadoop/core-site.xml
在<configuration></configuration>之间加入HDFS的配置(HDFS的端口配置在9000):
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
5. 配置$HADOOP_HOME/etc/hadoop/yarn-site.xml
编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml文件:
sudo vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
在<configuration></configuration>之间加入以下内容:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> |
6. 配置$HADOOP_HOME/etc/hadoop/mapred-site.xml
HADOOP_HOME目录下有一个配置模板$HADOOP_HOME/etc/hadoop/mapred-site.xml.template,先拷贝到$HADOOP_HOME/etc/hadoop/mapred-site.xml。
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml{.template,}
编辑$HADOOP_HOME/etc/hadoop/mapred-site.xml文件:
sudo vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
在<configuration></configuration>之间加入以下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
7. 准备数据存储目录
假设准备将数据存放在/mnt/hdfs,方便起见,现将其设为一个环境变量:
export HADOOP_DATA_DIR=/mnt/hdfs
创建DataNode和NameNode的存储目录,同时将这两个文件夹的属主修改为hduser:
sudo mkdir -p $HADOOP_DATA_DIR/namenode
sudo mkdir -p $HADOOP_DATA_DIR/datanode
sudo chown hduser /mnt/hdfs/namenode
sudo chown hduser /mnt/hdfs/datanode
8. 配置$HADOOP_HOME/etc/hadoop/hdfs-site.xml
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件:
sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
在<configuration></configuration>之间增加DataNode和NameNode的配置,如下:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/mnt/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/mnt/hdfs/datanode</value> </property> |