一、搭建环境
- VMware虚拟机(Ubuntu 16.04 64位)(自备)
- Java Development Kit(JDK)1.8
二、实验步骤与实验结果
1.创建Ubuntu16.04虚拟机
选择典型安装,选中提前准备好的Ubuntu16.04镜像文件
这里创建名为sorange的用户
硬盘内存分配40GB,处理器2个、2核,其余保持默认即可。
点击完成后进入Ubuntu安装界面。
2.修改Ubuntu语言为简体中文
*如果安装过程中已经选择了中文,则可以跳过该步骤。
安装完成中文语言包后,需要将“汉语(中国)”拖动到第一位,并点击Apply System-wide应用到全局。
之后点击Regional Fomats修改区域格式为汉语(中国),修改完成后重启虚拟机。
重启完成后会提示是否更新标准文件夹名称,这里选择更新名称。
三、修改Ubuntu软件和更新镜像节点为中国镜像服务器
打开Ubuntu的“设置-软件和更新”选择“中国的服务器”,如果弹出框要选择具体域名,则选择带有aliyun的镜像域名。
四、在Ubuntu中创建hadoop用户
打开Ubuntu终端,输入如下命令创建新用户:
sudo useradd -m hadoop -s /bin/bash
完成后输入如下命令设置密码:
sudo passwd hadoop
接着授予hadoop用户管理员权限,便于后续使用使用以下命令:
sudo adduser hadoop sudo
完成后点击右上角切换到hadoop用户
五、更新apt-get
打开Ubuntu终端,输入如下命令,回车后输入密码:
sudo apt-get update
六、安装vim编辑器
打开Ubuntu终端,输入如下命令,回车后输入密码,过程中提示是否继续执行,输入y即可。
sudo apt-get install vim
七、安装SSH
首先安装SSH server,命令如下:
sudo apt-get install openssh-server
过程中会提示“您希望继续执行吗?”,输入y继续即可。
安装后,通过ssh登录本机,命令如下:
ssh localhost
这里提示是否继续连接,输入yes继续,并按提示输入密码即可成功登录。
八、配置SSH无密码登录
*注意:如果上一步没有退出SSH连接,需要输入exit退出ssh连接。
退出SSH连接后依次输入如下命令:
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
之后再输入ssh localhost即可无密码登录。
九、安装Java环境
将提前下载好的JDK1.8文件(jdk-8u162-linux-x64.tar.gz)(提取码:99bg)上传到Ubuntu的下载目录下,并执行以下命令将JDK文件解压到指定位置:
cd /usr/lib
#创建/usr/lib/jvm目录用来存放JDK文件
sudo mkdir jvm
#进入hadoop用户的主目录
cd ~
cd 下载
# 注意这里是jdk文件所在位置
# 由于我们前面将语言更改为了中文且修改了标准文件夹的名称,
# 所以这里不能使用Download,而是需要使用中文的“下载”
#把JDK文件解压到/usr/lib/jvm目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm
接着切换到/usr/lib/jvm目录下,查看文件是否存在
cd /usr/lib/jvm
ls
确认文件均存在之后,切换到用户主目录下进行环境变量设置,命令如下:
cd ~
vim ~/.bashrc
此时会进入vim编辑器,我们需要在文件开头加入以下内容(按下键盘上的字母i进入插入模式):
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
插入完成后按下键盘上的esc键,输入:wq保存退出
之后输入以下命令使得配置立即生效:
source ~/.bashrc
接着输入以下命令查看是否安装成功:
java -version
出现如上内容证明安装成功。
十、安装Hadoop 2
接着我们安装Hadoop2(提取码:99bg),将下载下来的文件(hadoop-2.7.1.tar.gz)安装到/usr/local/目录下,具体步骤如下:
*注意:如果使用的不是2.7.1版本,请自行修改下面命令中的文件名
首先解压文件到/usr/local下:
sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local
接着进入/usr/local目录:
cd /usr/local/
修改hadoop目录名:
sudo mv ./hadoop-2.7.1/hadoop
修改文件权限:
sudo chown -R hadoop ./hadoop
完成后检查Hadoop是否安装成功,出现版本即表示成功:
./bin/hadoop version
十一、进行伪分布式配置
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
这里我们直接使用图形化界面(gedit编辑器,即右键文件点击编辑打开的编辑器)对上述两个文件进行修改:
将core-site.xml文件内容整体修改为:
<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>
类似的,我们将hdfs-site.xml文件内容整体修改为:
<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>
修改完成后均需要保存。
*提示:Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
随后,我们执行NameNodes的格式化操作,依次输入如下命令:
cd /usr/local/hadoop
./bin/hdfs namenode -format
出现"successfully formatted" 和 "Exitting with status 0" 的提示,则代表成功。
接着开启 NameNode 和 DataNode 守护进程,依次输入如下指令,输入第二条指令时,会询问是否继续,输入yes即可:
cd /usr/local/hadoop
./sbin/start-dfs.sh
成功启动后,可以打开Ubuntu自带的火狐浏览器访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
我们也可以用jps命令来查看是否运行完全,有以下四个证明运行完全:
十二、运行伪分布式实例
首先在HDFS中创建用户目录,命令如下:
./bin/hdfs dfs -mkdir -p /user/hadoop
接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是/user/hadoop/input,命令如下:
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
复制成功后,查看文件列表:
./bin/hdfs dfs -ls input
接着输入以下命令查看运行结果:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
./bin/hdfs dfs -cat output/*
我们也可以将结果取回本地,命令如下:
*注意:如果运行过该实例或output文件夹已经存在,要先使用rm -r ./output删除output文件夹
./bin/hdfs dfs -get output ./output # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*
至此,已经成功完成Hadoop伪分布式的搭建及其实例运行与结果查看,最后补充两条命令:
启动Hadoop:./sbin/start-dfs.sh
关闭Hadoop:./sbin/stop-dfs.sh