目录
5.4 格式化后启动、调用实例、停止所有运行的hadoop进程
1、安装虚拟机,并安装linux虚拟机
网上安装教程很多,这里不过多叙述。
2、Hadoop伪分布式搭建
2.1.创建hadoop用户
使用组合键ctrl+alt+T进入命令行界面,并输入以下命令创建一个用户名为hadoop的用户 -m用来指定用户名,-s用来指定用户登录时所需的shell文件。
sudo useradd -m hadoop -s /bin/bash
由于部门权限规定或安全限制,负责部署hadoop的管理员没有linux root权限,但按照最佳做法,安装时有一些操作需要以root用户身份执行。以下给予该用户root权限:
sudo adduser hadoop sudo
2.2.更新命令
先后执行以下两行命令
sudo apt-get update
sudo apt-get upgrade
上述命令执行完之后执行以下命令
sudo apt-get install vim
sudo apt-get install gedit
某些系统可能自带的有这两个软件,若执行以上命令提示不用更新则系统自带的已有vim和gedit这两个编辑器。
3、配置ssh并设置无密码登录
3.1下载ssh
1. 执行以下命令下载ssh server
sudo apt-get install openssh-server
2.下载完成之后连接本地ssh
ssh localhost
按提示输入yes,在输入hadoop用户的密码,完成登录。
3.2 设置无密码登录
1.以下进行无密码登录的设置,首先先退出刚刚ssh localhost的连接:
exit
2.然后进入SSH对应目录下,该目录包含了几乎所有当前用户SSH配置认证相关的文件:
cd ~/.ssh/
3.输入生成SSH私钥与公钥的命令,-t用于声明密钥的加密类型,输入Hadoop密码。这一步会提醒设置SSH密码,输入密码时直接回车就表示无密码,第二次输入密码回车确定,最后一次提交:
ssh-keygen -t rsa
4.将生成的SSH的公钥加入目标机器的SSH目录下,这里采用cat命令与>>,cat file1>>file2的含义为将file1内容append到file2中。
cat ./id_rsa.pub >> ./authorized_keys
4、安装java并配置环境变量
4.1下载java
Hadoop和与之相关的很多工具都是通过java语言编写的,并且很多基于hadoop的应用开发也是使用java语言的,但是ubuntu系统不会默认安装java环境,所以需要安装java并配置环境变量。以下安装下载java的jdk、jre:
sudo apt-get install default-jre default-jdk
4.2配置环境变量
1.通过vim编辑器打开环境变量的设置文件:
sudo vim ~/.bashrc
2.在文件的尾部加上以下语句:
export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
在这一步在我的虚拟机中直接复制时会出现第一句的export只剩rt两个字母,必须要手动输入export。
3.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source ~/.bashrc
5、下载hadoop,配置hadoop环境。
5.1下载并解压
1.在虚拟机内的火狐浏览器中输入https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/,下载hadoop应用,默认保存至downloads文件夹下。选择已编译好的版本hadoop-2.9.2.tar.gz,因为该版本可以直接解压使用,更为方便。
2. 进入解压包存放的Downloads文件夹,右键属性查看压缩包的绝对路径,然后解压至/usr/local目录下:
sudo tar -zxf /home/hadoop/Downloads/hadoop-2.9.2.tar.gz -C /usr/local
3.进入刚刚解压后存放的目录下:
cd /usr/local/
4.将该文件夹的名字重命名为hadoop,屏蔽掉版本号的信息,使得后续命令行输入更为简便:
sudo mv ./hadoop-2.9.2/ ./hadoop
5.2配置环境
1.将已重命名的该文件夹的拥有者,指定给用户hadoop,缺少这一步,将导致后续操作特别是运行Hadoop时,反复因权限不足而停止:
sudo chown -R hadoop ./hadoop
2.经后续测试发现问题,虽然已经为ubuntu系统设置了java的环境变量,但hadoop实际运行时仍会出现找不到java-jdk的现象,故再对hadoop的环境文件进行修改,此外,该文件还包括启动参数、日志、pid文件目录等信息。先进入目录:
cd ./hadoop/etc/hadoop
3.使用vim编辑器,打开环境变量文件:
sudo vim hadoop-env.sh
4.添加该语句(这里也需要手动输入export):
export JAVA_HOME=/usr/lib/jvm/default-java
5.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source hadoop-env.sh
6.截至目前,hadoop框架已经搭建好了,可以通过调用版本号进行测试hadoop是否可用
cd /usr/local/hadoop
./bin/hadoop version
正确搭建应该能看到hadoop的版本号等信息:
5.3配置四个文件
5.3.1 core-site.xml
1.先打开xml文件,注意./表示当前文件夹下,当前应该在第二个hadoop文件夹下cd ./etc/hadoop/
sudo gedit core-site.xml
2.打开xml文件应该是有内容的,如果没有内容说明打开文件不对,需要检查输入的路径及文件名是否正确。将替换为以下内容,第一个属性表示Hadoop重要临时文件的存放目录,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务;第二个被官方称之为默认系统文件的名称(the name of the default file system),实际上决定了文件系统的主机号、端口号,对于伪分布式模型来说,其主机地址为localhost。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
5.3.2 hdfs-site.xml
1.同样进入hdfs-site.xml文件:
sudo gedit hdfs-site.xml
2.对hdfs-site.xml进行同样的替换操作,属性的含义分别为复制的块的数量、DFS管理节点的本地存储路径、DFS数据节点的本地存储路径:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
5.3.3 mapred-site.xml
1.Hadoop2.X并没有像1.X提供mapred-site.xml文件,需要将样本文件复制为可使用的配置文件:
mv mapred-site.xml.template mapred-site.xml
2.同样打开
sudo gedit mapred-site.xml
3.这里使用yarn。yarn 是一种资源管理和作业调度技术,作为Hadoop 的核心组件之一,负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,其基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon,总体上yarn是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slaver。具体配置内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.3.4 yarn-site.xml
1.打开
sudo gedit yarn-site.xml
2.然后配置yarn-site.xml文件,这里修改NodeManager上运行的附属服务即可:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5.4 格式化后启动、调用实例、停止所有运行的hadoop进程
5.4.1 格式化并启动
1.为了保险起见,执行这一步前关闭命令行模式,重新打开,放弃当前路径。
更改配置并保存后,格式化HDFS的NameNode,在这一步之前,如果hdfs-site.xml中dfs.namenode.name.dir属性指定的目录不存在,格式化命令会自动创建之;如果存在,请确保其权限设置正确,此时格式操作会清除其内部所有的数据并重新建立一个新的文件系统:
/usr/local/hadoop/bin/hdfs namenode -format
显示信息内若包含以下内容,则说明成功格式化:
2.然后启动全部进程:
进入hadoop中sbin文件夹。然后执行以下命令:
sh start-all.sh
3.成功启动后,可以通过web浏览器访问http://localhost:50070,可以看到如下界面:
4.输入jps查看到六个进程,如果缺少某进程需要查询解决方法:
自此,hadoop伪分布式搭建就已完成。