【Hadoop】在Ubuntu系统下安装Hadoop集群安装 | 您所在的位置:网站首页 › ubuntu中hadoop安装 › 【Hadoop】在Ubuntu系统下安装Hadoop集群安装 |
本环境使用 Ubuntu-18.04.1 64,分布式集群方式(三台虚拟机:一台namenode,俩台datanode) OpenJDK Java 1.8.0 Hadoop 2.9.1 2018.9.30. 本随笔完结 创建hadoop用户(三台都要) 为了操作方便,如果安装Ubuntu的时候不是“hadoop”用户,则需要增加一个名为hadoop的用户。 打开终端是 ctrl+alt+t Ubuntu终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v 创建用户: sudo useradd -m hadoop -s /bin/bash设置密码,可简单设置为 hadoop,按提示输入两次密码: sudo passwd hadoophadoop 用户增加管理员权限,方便部署: sudo adduser hadoop sudo注销当前用户(在右上角),在登陆界面使用hadoop用户进行登陆
更新apt 由于Ubuntu的一些特性,需要随时更新一下apt,不然有时候软件安装不了 sudo apt-get update后续配置文件的过程中,很多人喜欢用vi ,vim。为了图方便可以使用gedit,请将后面用到 vim 的地方改为 gedit
可选: Ubuntu 安装gcc: sudo apt-get update sudo apt-get install gcc安装最新版本的Java Hadoop 3.x.y 或更高版本只支持Java 1.8或者更高版本,Hadoop 2.x.y 支持Java 1.1 - 1.7版本。 更新软件列表 sudo apt-get update安装openjdk-8-jdk sudo apt-get install openjdk-8-jdk查看Java版本,如下: java -version安装好 OpenJDK 后,需要找到相应的安装路径 update-alternatives --config java我们输出的路径为 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 其中,绝对路径为 /usr/lib/jvm/java-8-openjdk-amd64 接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置 sudo vi ~/.bashrc在文件最前面添加如下单独一行(注意 = 号前后不能有空格),将“JDK安装路径”改为绝对路径,并保存: export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64让该环境变量生效 source ~/.bashrc设置好后我们来检验一下是否设置正确: echo $JAVA_HOME # 检验变量值 java -version $JAVA_HOME/bin/java -version # 与直接执行 java -version 一样如果正确的话 第一个会输出JAVA安装路径 第二个和第三个输出的Java安装版本一致 这样,Hadoop 所需的 Java 运行环境就安装好了 网络配置 修改主机名字 为了便于区分,可以修改各个节点的主机名 以 master 节点上为例: sudo vim /etc/hostname把里面原来的主机名字删掉,改为: HOSTNAME=master按照同样的方式,将剩下俩台主机分别改为:slave1 、slave2
网络配置 配置IP地址 如果使用的是虚拟机安装的系统需要注意以下几个坑: VirtualBox中虚拟机不能互相访问 Virtualbox中Ubuntu系统桥接(Bridge)模式不能访问外网 Brige模式网卡下,Ubuntu系统的IP地址不固定
解决办法(一台有问题,三台都要改): 1. NAT卡保证了可以连外网,Bridge卡保证了虚拟机可以互联。所以,如果已有网卡是NAT模式,则需要在虚拟机设置中再加一个网卡,其连接方式更改网络连接方式为桥接(Bridge)模式,并保证每台主机桥接(Bridge)网卡的MAC地址不同。
2. 桥接(Bridge)分配的IP地址如果不固定,需要改成静态(一台有问题,三台都要改)。 输入 ifcongfig 指令(以master主机为例)。 第一个 enp0s3 为 NAT 网卡,其IP地址不是独立主机IP地址。这是我们创建的第一个网卡,为默认网卡默认路由,这就使得其他路由不能匹配到的网段都会走 enp0s3 这个网卡,即可以访问外网。 第二个 enp0s8 为 Bridge 网卡,其IP地址为:172.31.185.70 修改静态IP地址 sudo vi /etc/network/interfaces文本最后添加如下信息,保存退出: auto enp0s8iface enp0s8 inet staticaddress 172.31.185.70 重启路由器 sudo /etc/init.d/networking restart这样,我们就将一台主机的IP地址配置好了。将剩下俩台主机按照同样配置方法的ip地址改为 slave1 172.31.185.71slave2 172.31.185.72这样,我们三台主机的IP地址分别为 172.31.185.70 master172.31.185.71 slave1172.31.185.72 slave2执行如下命令修改自己所用节点的IP映射 sudo vim /etc/hosts在文末添加我们的IP地址与主机名字映射。如下图master主机所示(一般该文件中只有一个 127.0.0.1,其对应名为 localhost,如果有多余的应删除,特别是不能有 “127.0.0.1 master” 这样的记录) 按照同样的方式,将剩下俩个主机 hosts 文件都修改好。重启生效。
配置SSH无密码登陆节点 因为Ubuntu中默认没有安装SSH服务,所以我们先要执行三步使其生效(三台都要): sudo apt-get install openssh-server #安装服务,一路回车 sudo /etc/init.d/ssh restart #启动服务 sudo ufw disable #关闭防火墙执行以下命令看是否成功运行,如果成功的话,会出现俩个进程 ps -e | grep ssh然后在master节点生成SSH公钥,公钥储存在 /home/hadoop/.ssh中 cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost rm ./id_rsa* # 删除之前生成的公匙(如果有) ssh-keygen -t rsa # 一直按回车就可以让 master 节点可以无密码 SSH 本机,在 master 节点上执行 cat ./id_rsa.pub >> ./authorized_keys完成后可执行 ssh master 验证一下(需要输入 yes,成功后执行 exit 返回原来的终端) ssh master接着在 master 节点将上公匙传输到 slave1节点,过程中需要输入 slave1 节点的密码,传输100%以后就是传过去了: scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/ 接着在 slave1节点上,把公钥加入授权 mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys rm ~/id_rsa.pub # 用完就可以删掉了对 slave2 重复上面俩步,这样 master 节点就可以无密码登陆俩个 slave 节点了。 ssh slave1 #可以用来检验是否能成功登陆,exit退出选: Ubuntu下出现 “ ifconfig not found ”解决方案 sudo apt-get install net-tools -y
安装Hadoop Hadoop 可以通过http://mirror.bit.edu.cn/apache/hadoop/common/ 或者者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载。 下载文件默认保存于于 ~/Download 路径中(中文版Ubuntu为 ~/下载 路径)。 Hadoop 我安装的是 2.9.1 版本 ( hadoop-2.9.1.tar.gz )。如果你用的不是 2.9.1 版本,接下来的指令需要更改为你目前安装的版本。 sudo tar -zxf ~/Download/hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中 cd /usr/local/ sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop sudo chown -R hadoop ./hadoop将 Hadoop 安装至 /usr/local/ 中 sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中 cd /usr/local/ sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop sudo chown -R hadoop ./hadoop # 修改文件权限输入指令查看 Hadoop 是否可用,成功则会显示 Hadoop 版本信息: cd /usr/local/hadoop #到Hadoop文件夹的当前路径 ./bin/hadoop version #查看版本,再设置完环境变量以后,再任意目录执行 hadoop version 同样有效。
配置 Hadoop 环境变量 可以将 Hadoop 安装目录加入环境变量中,这样就可以在任意目录中使用 Hadoop 指令了。 在 master 节点,输入指令: sudo vim ~/.bashrc在文末添加如下代码,保存退出: export HADOOP_PATH=/usr/local/hadoop export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin再使设置生效 source ~/.bashrc配置分布式集群环境 需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件。 slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
slaves 此文件记录的是将要作为 Datanode 节点的名字。将 slave1,slave2 主机名字加入进去,如果想让 master 节点作为 Namenode 的同时也作为 Datanode,可以保留 localhost。(我这里没有保留)
core-site.xml 改为如下配置: fs.defaultFS hdfs://master:9000 hadoop.tmp.dir file:/usr/local/hadoop/tmp Abase for other temporary directories.
hdfs-site.xml 这文件记录备份相关。dfs.replication 一般设为 3,我们有俩个 slave 节点,因此可以将 dfs.replication 的值设为 2 dfs.namenode.secondary.http-address master:50090 dfs.replication 2 dfs.namenode.name.dir file:/usr/local/hadoop/tmp/dfs/name dfs.datanode.data.dir file:/usr/local/hadoop/tmp/dfs/data
mapred-site.xml 可能默认文件名为 mapred-site.xml.template ,此时需要重命名 mv mapred-site.xml.template mapred-site.xml改为如下配置: mapreduce.framework.name yarn mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888
yarn-site.xml 改为如下配置: yarn.resourcemanager.hostname master yarn.nodemanager.aux-services mapreduce_shuffle
配置好以后,将 master 节点上的 /usr/local/Hadoop 文件夹复制到剩余节点上。 在 master 节点执行: cd /usr/local sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件 sudo rm -r ./hadoop/logs/* # 删除日志文件 tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制 cd ~ #跳转到有压缩包的路径下 scp ./hadoop.master.tar.gz slave1:/home/hadoop #发送到slave1节点,对其他salve节点也要执行这一步在剩余 salve 节点上执行(以slave1为例): sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在) sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local sudo chown -R hadoop /usr/local/hadoop
启动 Hadoop 首次启动 Hadoop 需要将 master 节点格式化: hdfs namenode -format # 首次运行需要执行初始化,之后不需要启动 start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver通过命令 jps 可以查看各个节点的启动进程 jps
master 有 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServe slave 有 DataNode、 NodeManager 以上进程缺少任意一个都表示有错。
在 master 节点查看 DataNode 是否正常启动。以我为例,Live datanodes 为 2,与 slave 数量一致,集群启动成功。 hdfs dfsadmin -report可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/
可选: 关闭Hadoop cd /usr/local/hadoopstop-all.sh
特别感谢: 给力星前辈写的非常好,单机和集群俩篇文章对我启发都很大。可以说我的第一个hadoop集群就是在他的博文指导下搭建好的。吃水不忘挖井人,在向前辈表示感谢的同时,特此附上原网址: http://www.powerxing.com/install-hadoop/
|
CopyRight 2018-2019 实验室设备网 版权所有 |