本文参考林大贵实现Hadoop Single Node Cluster的安装,安装步骤如下:
1. 安装JDK
因为Hadoop是使用Java开发的,所以必须先安装JDK。
安装JDK最新版
(1)到官网下载jdk最新版 http://www.oracle.com/technetwork/java/javase/downloads/index.html
选择.tar.gz下载
(2)将下载的压缩包文件拷贝到/usr/loacal/,解压缩,建立链接,更改目录所有者。
cd /usr/local
sudo cp ~/下载/jdk-10.0.2_linux-x64_bin.tar.gz ./
sudo tar -xvzf jdk-10.0.2_linux-x64_bin.tar.gz
sudo ln -s jdk-10.0.2 java
sudo chown -R yf:yf java
sudo chown -R yf:yf jdk-10.0.2
(3)配置环境变量
编辑/etc/profile,文件的末尾添加下边的内容
JAVA_HOME=/usr/local/java
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
export CLASS_PATH
使环境变量生效
source /etc/profile
验证
java -version
2. 设置SSH无密码登陆
Hadoop必须通过SSH与本地计算机以及其他主机连接,所以必须设置SSH。Hadoop是由多台服务器所组成的,当我们启动Hadoop系统时,NameNode必须与DataNode连接并管理这些节点(DataNode)。此时系统会要求用户输入密码。为了让系统顺利运行而不手动输入密码,需要将SSH设置成无密码登陆。注意,无密码登陆并非不需要密码,而是事先交换的SSH Key(秘钥)来进行身份验证。
(1)安装SSH
sudo apt-get install ssh
(2)安装rsync
sudo apt-get install rsync
(3)生成SSH Key
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(4)将产生的key放到许可证文件中
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3. 下载安装Hadoop
(1)下载Hadoop2.6.4,并安装到Ubuntu中。http://archive.apache.org/dist/hadoop/core/hadoop-2.6.4/
cd /usr/local
sudo cp ~/下载/hadoop-2.6.4.tar.gz ./
sudo tar -xvzf hadoop-2.6.4.tar.gz
sudo ln -s hadoop-2.6.4 hadoop
sudo chown -R yf:yf hadoop
sudo chown -R yf:yf hadoop-2.6.4
(2)Hadoop常用目录说明
目录 | 说明 |
---|---|
bin/ | 各项运行文件,包括Hadoop,HDFS,YARN等 |
sbin/ | 各项shell运行文件,包括start-all.sh、stop-all.sh |
etc/ | etc/hadoop子目录包含Hadoop配置文件,例如:hadoop-env.sh、core-site.xml、YARN-site.xml |
lib/ | Hadoop函数库 |
logs/ | 系统日志,可以查看系统运行情况,运行有问题时可从日志找出错误原因 |
4. 设置Hadoop环境变量
(1)设置每次用户登陆时必须要设置的环境变量。
export JAVA_HOME=/usr/local/java
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=$HDOOP_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"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
(2)使环境变量生效
source ~/.bashrc
5. Hadoop配置文件的设置
在Hadoop的/usr/local/hadoop/etc/hadoop目录下有很多配置设置文件,通过编辑这些文件来启用基本或是更高级的功能。
(1)设置hadoop-env.sh
hadoop-env.sh是Hadoop的配置文件,在这里必须设置Java的安装路径。
修改JAVA_HOME设置
export JAVA_HOME=/usr/local/java
(2)设置core-site.xml
在core-site.xml中,必须设置HDFS的默认名称,当我们使用命令或程序要存取HDFS时,可使用此名称。
设置HDFS默认名称
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
(3)设置YARN-site.xml
YARN-site.xml文件中包含有MapReduce2(YARN)相关的配置设置
<configuration>
<!-- Site specific YARN configuration properties -->
<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>
</configuration>
(4)设置mapred-site.xml
mapred-site.xml用于设置监控Map与Reduce程序的JobTracker任务分配情况以及TaskTracker任务运行情况。
拷贝一份mapreduce框
cp mapred-site.xml.template mapred-site.xml
设置mapreduce框架为yarn
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)设置hdfs-site.xml
hdfs-site.xml用于设置HDFS分布式文件系统。
分别设置blocks副本备份数量,设置NameNode数据存储目录,设置DataNode数据存储目录。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
6. 创建并格式化HDFS目录
HDFS目录是存储HDFS文件的地方,在启动Hadoop之前必须先创建并格式化HDFS目录。
(1)创建namenode数据存储目录
mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
(2)创建datanode数据存储目录
mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
(3) 将HDFS进行格式化
hadoop namenode -format
此条命令会删除所有的数据
7. 启动Hadoop
全部设置完成就可以开始启动Hadoop,并查看Hadoop相关进程是否已经启动
同时启动HDFS和MapReduce框架Yarn
start-all.sh
使用jps查看已经启动的进程
jps
HDFS功能:NameNode、SecondaryNameNode、DataNode已经启动
MapReduce2(YARN):ResourceManager、NodeManager已经启动