Hadoop Single Node Cluster
- Hadoop Single Node Cluster 只以一台机器来建立Hadoop环境,但你仍然可以使用Hadoop命令,只是无法发挥使用多台机器的威力。
- 因为只有一台服务器,所有的功能都集中在一台服务器中。
安装JDK
- Hadoop是基于Java开发的,所有必须先安装Java环境。
- 点击“终端”,输入以下代码查看Java版本
java -version
-
JDK: Java Development Kit, Java语言的软件开发工具包
-
在Linux中既可以使用apt进行软件包的管理,也可以使用apt-get下载安装软件包(或称为套件)。在这里我们会使用apt-get安装jdk。
-
不过,在安装之前,为了获取最新的软件包版本必须先运行apt-get update。此命令会连接到APT Server,更新最新的软件包信息。
-
运行apt-get必须具有superuser(超级用户)权限,但superuser权限很大,为了安全考虑,一般我们在运行是不会以superuser来登录系统。我们可以在命令前加上sudo命令,系统会询问superuser密码(既安装是输入的密码),这样就可以获得superuser权限。
-
在“终端”输入以下命令
sudo apt-get update
- 接着输入密码
- 任务完成
- 使用apt-get安装JDK
- 在“终端”输入以下命令
sudo apt-get install default-jdk
- 先输入“Y”再按Enter键
- 任务完成
- 再次使用以下命令查看Java版本
java -version
- 系统响应已安装的Java版本时,代表已经成功安装了JDK
- 查询Java安装路径
update-alternatives --display java
设置SSH无密码登录
- Hadoop是由很多台服务器所组成的,当我们启动Hadoop系统时,NameNode必须与DataNode连接,并管理这些节点(DataNode)。此时系统会要求用户输入密码。为了让系统顺利运行不需手动输入密码,就需要SSH设置成无密码登录。
- 注意,无密码登录并非不需要密码,而是以事先交换的SSH Key(密钥)来进行身份验证。
- Hadoop使用SSH(Secure Shell)连接是目前较可靠、专为远程登录其他服务器提供的安全性协议。通过SSH会对所有传输的数据进行加密。利用SSH协议可以防止远程管理系统时信息外泄的问题。
安装SSH
- 在“终端”输入以下命令
sudo apt-get install ssh
安装rsync
- 在“终端”输入以下命令
sudo apt-get install rsync
- 在“终端”输入以下命令
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
查看产生的密钥
- SSH Key会产生在用户的根目录下,也就是/home/hduser
- 在“终端”输入以下命令
ll ~/.ssh
将产生的Key放置到许可证文件中
- 为了能够无密码登录本机,我们必须将产生的公钥加入到许可证文件中。
- 在“终端”输入以下命令
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
- Linux的输出重定向附加功能命令的格式如下
- 命令 >> 文件
- 重定向符号“>>”会将命令执行后产生的标准输出(stdout)重定向附加在该文件之后。
- 如果文件不存在,就会先创建一个新文件,然后把标准输出(stdout)的内容存储在这个文件中。
- 如果文件已经存在,就会将标准输出(stdout)的数据附加至文件内容的后面,而不会覆盖原来文件的内容。
下载安装Hadoop
- 登录Hadoop官网下载页面
https://archive.apache.org/dist/hadoop/common/
- 下载Hadoop
- 在“终端”输入wget及空格键,然后粘贴之前复制的链接
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
- 解压缩hadoop 2.6
- 在“终端”输入以下命令
sudo tar -zxvf hadoop-2.6.0.tar.gz
- 移动hadoop2.6.0目录到/usr/local/hadoop
sudo mv hadoop-2.6.0 /usr/local/hadoop
下载安装Hadoop(方法二)
- 解决下载时间过长问题
- 登录清华大学开源软件镜像站:
https://mirrors.tuna.tsinghua.edu.cn/
- 在“终端”输入wget及空格键,然后粘贴之前复制的链接
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable2/hadoop-2.10.1.tar.gz --no-check-certificate
- 下载完成
- 解压缩Hadoop 2.10.1
- 在“终端”输入以下命令
sudo tar -zxvf hadoop-2.10.1.tar.gz
- 移动hadoop2.6.0目录到/usr/local/hadoop
sudo mv hadoop-2.10.1 /usr/local/hadoop
查看Hadoop安装目录/usr/local/hadoop
- 在“终端”输入以下命令
ll /usr/local/hadoop
设置Hadoop环境变量
- 运行hadoop必须设置很多环境变量,可是如果每次登录时都必须重新设置就会很麻烦。因此可以再~/.bashrc文件中设置每次登录时都会自动运行一次环境变量设置。
- 编辑 ~/.bashrc
- 在“终端”输入以下命令
sudo gedit ~/.bashrc
- 在打开的文件末尾添加以下内容:
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"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
- 编辑完成后,先保存,再退出!
对上面的解释
- 设置JDK安装路径
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
- 设置HADOOP_HOME为Hadoop的安装路径/usr/local/Hadoop
export HADOOP_HOME=/usr/local/Hadoop
- 设置PATH
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin export
PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
- 设置HADOOP其他环境变量
export HADOOP_MAPRED_HOME= H A D O O P H O M E e x p o r t H A D O O P C O M M O N H O M E = HADOOP_HOME export HADOOP_COMMON_HOME= HADOOPHOMEexportHADOOPCOMMONHOME=HADOOP_HOME export HADOOP_HDFS_HOME= H A D O O P H O M E e x p o r t Y A R N H O M E = HADOOP_HOME export YARN_HOME= HADOOPHOMEexportYARNHOME=HADOOP_HOME
- 链接库的相关设置
export HADOOP_COMMON_LIB_NATIVE_DIR= H A D O O P H O M E / l i b / n a t i v e e x p o r t H A D O O P O P T S = " − D j a v a . l i b r a r y . p a t h = HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path= HADOOPHOME/lib/nativeexportHADOOPOPTS="−Djava.library.path=HADOOP_HOME/lib" export
JAVA_LIBRARY_PATH= H A D O O P H O M E / l i b / n a t i v e : HADOOP_HOME/lib/native: HADOOPHOME/lib/native:JAVA_LIBRARY_PATH
让~/.bashrc设置生效
-
当修改/.bashrc之后,先从系统注销再登录系统,这样设置就会生效,或者使用source命令让/.bashrc设置生效
-
在“终端”输入以下命令
source ~/.bashrc
编辑Hadoop-env.sh
- hadoop-env.sh是hadoop的配置文件,在这里必须设置Java的安装路径
- 在“终端”输入以下命令
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
- 原文件中JAVA_HOME的设置是:
export JAVA_HOME=${JAVA_HOME} 修改为:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
- 修改完保存并关闭文件
设置core-site.xml
- 在“终端”输入以下命令
sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
- 设置HDFS的默认名称
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
- 修改完保存并关闭文件
- 在core-site.xml中,我们必须设置HDFS的默认名称,当使用命令或程序要存取HDFS时,可使用此名称。
编辑yarn-site.xml
- yarn-site.xml文件中含有MapReduce2(YARN)相关的配置设置。
- 在“终端”输入以下命令
sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
- 编辑yarn-site的配置
<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>
- 修改完保存并关闭文件
设置mapred-site.xml
- mapred-site.xml用于设置监控Map与Reduce程序的JobTracker任务分配情况以及TaskTracker任务运行情况。Hadoop提供了设置的模板文件,可以自行复制修改。
- 在“终端”输入以下命令,复制模板文件:由mapred-site.xml.template至mapred-site.xml
sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
编辑mapred-site.xml
- 在“终端”输入以下命令
sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
- 编辑mapred-site.xml的配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 修改完保存并关闭文件
编辑hdfs-site.xml
- hdfs-site.xml用于设置HDFS分布式文件系统
- 在“终端”输入以下命令
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
- 输入以下内容
<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>
- 修改完保存并关闭文件
- 对上面内容的解释
- 设置blocks副本备份数量
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
- 设置NameNode数据存储目录
<property>
<name>dfs.namenode.name.dir</name>
<value> file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
- 设置DataNode数据存储目录
<property>
<name>dfs.datanode.data.dir</name>
<value> file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
创建并格式化HDFS目录
- 创建NameNode数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
- 创建DataNode数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
- 将Hadoop目录的所有者更改为hduser
sudo chown hduser:hduser -R /usr/local/hadoop
- Linux是多人多任务的操作系统,所有的目录或文件都具有所有者。使用chown可以将目录或文件的所有者更改为hduser。
将HDFS进行格式化
- 在“终端”输入以下命令
hadoop namenode -format
- Note:如果你的HDFS已经有数据,可以执行以上HDFS格式化命令,这个操作会删除所有的数据。
启动Hadoop
- 方法一:分别启动HDFS、YARN,使用start-dfs.sh启动HDFS、start-yarn.sh启动YARN
- 方法二:同时启动HDFS、YARN,使用start-all.sh
启动HDFS
start-dfs.sh
启动YARN
start-yarn.sh
查看NameNode、DataNode进程是否启动
- 在“终端”输入以下命令
jps
HDFS功能:NameNode、Secondary NameNode、DataNode
MapReduce2(YARN):ResourceManager、NodeManager
Hadoop Resource Manager Web界面
- 在虚拟机内的浏览器中输入以下网址
http://localhost:8088/
因为安装的是Single Node Cluster,所有当前只有一个节点
NameNode HDFS Web 界面
在虚拟机内的浏览器中输入以下网址
http://localhost:50070/