文章目录[隐藏]
最近在上大数据课程,老师让自己搞一个 Hadoop 的集群,费了好大劲算是配置好了三个机器的 Hadoop 集群,这里特地记录一下。
本篇是整个配置的第一部分,即单机模式和伪分布式模式,第二部分集群模式的配置见:Ubuntu16.04 安装配置 Hadoop3.0.0 —— 集群模式。
环境:Ubuntu 16.04 x64;JDK1.8;Hadoop 3.0.0
2018-3-29 更新:修复设置 Java和Hadoop环境变量的问题,之前配置过的可能需要重新配置
零、一键安装脚本
这里为什么是零呢?因为是独立于手动配置的一个步骤。我比较懒省事,不想每次创建一个虚拟机都重新输入一堆命令来安装 Hadoop,因此我写了一个一键安装 Hadoop 脚本,脚本是用 shell 写的,目前仅支持 Ubuntu 16.04 x64,项目实现了修改 apt 软件源为阿里的 CDN 源、安装 JDK1.8、下载解压 Hadoop 3.0.0 或者 2.7.5 版本、自动配置 Java 和 Hadoop 环境变量、配置 SSH 本地主机免密码登陆(适用于伪分布式模式)等功能,后期可能会开发出自动配置 Hadoop 的功能。
项目地址在 Github 上: https://github.com/sunriseydy/auto-install-hadoop
使用的方法:在一个纯净的 Ubuntu 16.04 x64 系统上(意思就是刚刚创建好的系统),在终端中输入以下命令:
wget -O start.sh https://github.com/sunriseydy/auto-install-hadoop/raw/master/start.sh && sudo bash start.sh
注意在 && 后面是用 sudo 执行该脚本文件,然后输入当前用户的密码。
脚本会创建一个 hadoop 用户,密码默认为 hadoop ,同时 JDK 安装的路径为:/usr/lib/jvm/java-8-openjdk-amd64
,hadoop 的安装路径为: /usr/local/hadoop
。
脚本运行结束后 Hadoop 就已经是单机模式了,接着就可以跳到 单机模式的运行 开始了。至于怎么配置集群模式,我会在后面慢慢说的,当然步骤还是由简到难,即从“单机模式”到“伪集群模式”到“集群模式”。
一、准备工作
0.新建hadoop用户
这里还有一个零步骤,这个零步骤是新建一个 hadoop 用户,和其他 linux 用户区别开来,这样有助于环境的配置,当然如果你想用 root 用户安装运行 hadoop 也不是不可以,只不过运行时 hadoop 会有警告而已。
新建 hadoop 用户,密码我这里统一用 hadoop
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop #在下面输入两次密码来新建密码
sudo adduser hadoop sudo
接下来的步骤中如未说明则均以 hadoop 用户执行命令,切换到 hadoop 用户的命令是:
su hadoop
然后输入 hadoop 用户的密码即可。
1.换源
我这里装的是 Ubuntu Server 16.04,这个版本默认的软件源是 Ubuntu 美国官方的源,对于国内来说速度极慢,因此首先要把软件源换成国内的,这里我选择的是阿里的一个 CDN 源,换源的方法具体可以看我写的另一篇博客:Ubuntu更换软件源,简单的方法就是运行以下命令:
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
" > /etc/apt/sources.list
或者以管理员权限编辑 apt 的源,即 /etc/apt/sources.list
文件,将上面的代码引号部分复制到文件中,记着要删除原来文件中的内容。
接着以管理员权限运行
sudo apt-get update
sudo apt-get upgrade
注意,接下来我会以 sudo
标识这条命令是需要以管理员权限运行的。
2.安装必要的软件
更换好软件源之后我们就来安装一些必要的软件了。
sudo apt-get install -y vim openssh-server openjdk-8-jdk wget tar pdsh
下面一一解释这些软件:
a.安装ssh服务端和pdsh
Hadoop 3.0.0 中 NameNode(Boss,老板) 管理 DataNode(Workers,员工)是通过 SSH ,并且使用的是 PDSH (Parallel Distributed SHell,可并行的执行对目标主机的操作),因此首先要安装 SSH 的服务端和 PDSH。输入如下命令即可:
sudo apt-get install -y openssh-server pdsh
在安装完 openssh-server 之后就开启了 SSH 的服务端,具体的介绍可以查看我写的一篇博客:Ubuntu配置ssh并实现Putty密钥登陆、禁止密码登陆、更改ssh端口
注意,这里安装完 PDSH 之后如果不做设置它默认使用的并不是 SSH,这样在后序运行 Hadoop 时会报错(socket err),因此这里先设置一下:
echo "export PDSH_RCMD_TYPE=ssh" >> /home/hadoop/.bashrc
source /home/hadoop/.bashrc
这样就指定了 PDSH 使用的是 SSH。
B.安装 JDK
由于 Hadoop 是使用 Java 写的,并且开发 Hadoop 的程序也是要用 Java 写,因此必须要安装 JDK 并配置好环境变量。具体的安装和配置方法可以参考我写的一篇博客:在Linux[Ubuntu CentOS]上安装配置JDK
简单来说就是:
sudo apt-get install -y openjdk-8-jdk
这个命令是安装开源版的 JDK1.8,并且默认安装在/usr/lib/jvm/java-8-openjdk-amd64
路径下,因此在配置 Java 环境变量时 JAVA_HOME 就是这个路径。配置的方法如下:
echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' >> /home/hadoop/.bashrc
注意,这里添加的环境变量只针对于 hadoop 用户,若想让所有的用户都能用 Java,则将上述代码改为下面所示(/etc/profile 需要重启终端才能生效或者手动 source):
sudo echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' >> /etc/profile
然后将修改 PATH 系统变量:
echo "export PATH=$PATH:${JAVA_HOME}/bin" >> /home/hadoop/.bashrc
同样的,若想更改系统级别的 PATH 就需要将代码改为:
sudo echo "export PATH=$PATH:${JAVA_HOME}/bin" >> /etc/profile
最后要配置 CLASSPATH:
echo 'export CLASSPATH=.:$JAVA_HOME/lib' >> /home/hadoop/.bashrc
#或者
sudo echo 'export CLASSPATH=.:$JAVA_HOME/lib' >> /etc/profile
最后的最后 source 一下
source /home/hadoop/.bashrc
好啦,这样 Java 的环境就配置好了。
二、下载 Hadoop
准备工作做好之后就可以下载安装 Hadoop 了。前往 Apache Hadoop 的 Release 页面(Apache Hadoop Releases )选择要下载安装的版本,这里我选择的是 3.0.0 版本的 Binary ,即编译好的二进制文件,我们下载解压之后就可以直接使用,不用再自行编译。
点击 Binary 后可能会跳转到选择镜像源的页面,如果嫌官方的下载源下载速度慢的话可以选择清华大学的镜像源,地址为:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/;打开后选择要下载的版本,然后选择 hadoop-*-.tar.gz 下载,不要选择带有 src 的版本,这是源代码,还需要编译才能运行。
下载的命令为;
wget -O hadoop-3.0.0.tar.gz http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz
可以将其中的下载地址换为你自己复制的下载地址。
三、安装 Hadoop
将下载好的 Hadoop 安装包解压(以下命令需要用 sudo ):
sudo tar -zxf hadoop-3.0.0.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-3.0.0/ ./hadoop
这里我是把 Hadoop 解压到了 /usr/local 目录下(命令中的 Hadoop 名字可根据自己的实际情况更改)。
安装之后我们要把 hadoop 目录的权限和拥有者都设置为我们之前创建的 hadoop 用户。
cd /usr/local/
sudo chown -R hadoop:hadoop ./hadoop
之后我们要将 Hadoop 的相关路径添加到用户变量中(如果你的 Hadoop 安装路径与我的不同,要做相应的更改):
echo "export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin" >> /home/hadoop/.bashrc
echo "export HADOOP_HOME=/usr/local/hadoop" >> /home/hadoop/.bashrc
echo 'export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$CLASSPATH:`$HADOOP_HOME/bin/hadoop classpath`' >> /home/hadoop/.bashrc
echo 'export CLASSPATH=$CLASSPATH:$HADOOP_CLASSPATH' >> /home/hadoop/.bashrc
source /home/hadoop/.bashrc
接着我们输入
hadoop
#或者
cd $HADOOP_HOME && bin/hadoop
可以看到屏幕输出了 hadoop 命令的帮助信息。刚安装完的时候 Hadoop 的初始模式是单机模式,接下来我们测试下 Hadoop 的单机模式。
四、Hadoop 单机模式
这里可以参考官网的文档:http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/SingleCluster.html,简单来说就是跑一个 grep 程序,查找 etc/hadoop/ 下所有的 xml 文件中符合特定正则表达式的字符串(先讲所有文件复制到 input 目录下,然后将输出结果放到 output 目录下)。当然你可以用 wordcount 这个测试程序来跑。注意,以下命令均在 Hadoop 的安装目录下,即 /usr/local/hadoop,所以在执行下面的命令之前先执行
cd /usr/local/hadoop
#或者
cd $HADOOP_HOME
跳转到 Hadoop 的安装目录。
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
cat output/* # 显示出计算结果
要记住的是,每次计算完之后都要把 output 目录删掉,不然下次将结果输出到 output 时就会报错。
运算的结果大致是这样的:
1 dfsadmin
1 dfs.replication
接着就是要删除这个计算结果,即:
rm -rf output
五、伪分布式模式
见下一页
本作品由 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者(sunriseydy)和原文链接(https://blog.sunriseydy.top/technology/linux/ubuntu16-04-install-hadoop3-0-0-with-a-single-node/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢
感谢您的支持,SunriseYDY 会继续努力的!



打开支付宝扫一扫,即可进行扫码打赏哦
日出一点一 | 在探索的路上永不止步