Windows 下Hadoop环境搭建
环境,WINDOWS 10专业版(企业版也一样)
以下是主要的步骤:
1. 安装Hyper-V
2. 在Hyper-V下安装UBUNTU
3. 在UBUNTU下安装配置Hadoop
本文主要讲第3点,第一点在程序与功能中启用或关闭WINDOWS 功能界面,点上HYPER的两个功能,安装重启即可,可以参考官方教程,比较简单: https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
需要注意的是,要在BIOS中打开CPU的Virtualization功能
安装UBUNTU也很简单,安装好HYPER后,在HYPER-V管理器中,创建虚拟机,选择UBUNTU,系统 会自动下载,安装,跟提示操作即可,如有不明白的,可以留言给我。
下面讲HADOOP的教程,网上很多的教程,但可能会有些不完整的地方,我的教程也是基于各位前辈的整理,如《给力星》前辈的(http://dblab.xmu.edu.cn/blog/install-hadoop/),如有不妥,请随时联系我。
3.1 创建hadoop用户
打开终端,输入以下指令,创建可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell:
sudo useradd -m hadoop -s /bin/bash
创建了用户之后,修改这个用户的密码:
sudo passwd hadoop
在弹出的界面中,输入两次相同的密码,请留意这个界面的密码是不能删除,退格的,如果输入错误,就重来。
执行以下命令,将HADOOP加入到管理员组:
sudo adduser hadoop sudo
基本知识
sudo命令
sudo是ubuntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码。
3.2 基本配置
注销当前用户,使用hadoop登陆
打开终端
执行以下命令,更新APT:
sudo apt-get update
安装VIM,用于修改各个配置文档:
sudo apt-get install vim
提示要占用空间的,输入Y什么的回车。
VIM的基本操作:
编辑模式,按i进行编辑模式,按esc键退出
保存并退出:按esc后,输入冒号:wq
退出: 按esc后,输入:q
3.3 安装配置SSH
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server, 输入以下指令安装:
sudo apt-get install openssh-server
安装后,登陆测试:
ssh localhost
输入yes连接。
但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
在终端中输入exit退出ssh,并在终端执行以下命令,利用 ssh-keygen 生成密钥,并将密钥加入到授权中。
cd ~/.ssh/
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
再次登陆SSH,应该是不需要密码的了
ssh localhost
我没有换源,有些提示不用理会,能LOGIN就没有问题
3.4 安装Java环境
在终端中录入以下指令:
sudo apt-get install default-jre default-jdk
这里安装需要点时间,取决于源以及网速,WINDOWS自带的这个,速度还可以。
安装完成后,配置JAVA的PATH
vim ~/.bashrc
输入i进入编辑模式,在文件首行输入():
export JAVA_HOME=/usr/lib/jvm/default-java
输入完成后,按esc键,输入:wq保存退出
执行以下代码,让环境变量立即生效
source ~/.bashrc
检测JAVA环境是否正常
echo $JAVA_HOME
检查路径是否正确,不正确就修正。可以运行JAVE命令,看版本号:
java -version
输入以下命令,检查 PATH是否正确,正确的与上一个命令是一样的效果:
$JAVA_HOME/bin/java -version
3.5 安装Hadoop
下载hadoop, 直接在https://mirrors.cnnic.cn/apache/hadoop/common/ 中下载一个稳定版,下载完成后,执行以及指令,安装到安装至 /usr/local/ 中,并授权给hadoop这个用户。请留意我下载的是3.2.1,如果你的是其他版本,把3.2.1改为你的版本号:
sudo tar -zxf ~/下载/hadoop-3.2.1.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-3.2.1/ ./hadoop
sudo chown -R hadoop ./hadoop
安装完成后,测试是否正常:
cd /usr/local/hadoop
./bin/hadoop version
正常会显示以下信息:
3.6 Hadoop单机配置(非分布式)
Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
进入hadoop目录
cd /usr/local/hadoop
创建一个输入的目录:
mkdir ./input
COPY 配置文件作为输入文件来测试:
cp ./etc/hadoop/*.xml ./input
执行以下命令,统计文件中dfs开关的单词出现的次数:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
查看计算的结果:
cat ./output/*
注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。
3.7 Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
进入配置文件目录:
cd /usr/local/hadoop/etc/hadoop
编辑core-site.xml文件:
vim ./core-site.xml
按i进入编辑模式,
把文件中以下部分:
<configuration>
</configuration>
替换为:
<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>
按ESC, 输入:wq 保存退出,文件内容应该如下:
修改配置文件 hdfs-site.xml
vim ./hdfs-site.xml
将
<configuration>
</configuration>
替换为:
<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>
<preperty>
<name>dfs.namenode.http-address</name>
<value>bdtest1:50070</value>
</property>
</configuration>
请留意上面的bdtest1是我UBUNTU电脑的电脑名,请更换为你的,如果这一段不加,不能通过WEB访问。
保存退出
Hadoop配置文件说明
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行,不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
执行 NameNode 的格式化:
cd /usr/local/hadoop
./bin/hdfs namenode -format
成功会有以下提示:
接着开启 NameNode 和 DataNode 守护进程。
输入以下指令:
cd /usr/local/hadoop
./sbin/start-dfs.sh
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。
正常启动有4个进程:
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
到此,结束安装