栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

虚拟机 VMware16.1.1安装 + 虚拟机安装Linux系统教程 + ubuntu18.04安装Hadoop

虚拟机 VMware16.1.1安装 + 虚拟机安装Linux系统教程 + ubuntu18.04安装Hadoop

在学习大数据的过程中,需要使用Hadoop,此篇文章用来记录从别人那里学习的步骤(与自己的相结合)以及遇到的问题和解决方式。

一、VMware16.1.1+Linux(ubuntu-18.04)+JDK+Hadoop 1.VMware16.1.1

VMware16.1.1的安装包以及安装步骤
备注:需要保存到百度网盘上进行下载,有百度网盘会员则下载速度会很快。

2.Linux(ubuntu-18.04)

Linux(ubuntu-18.04的安装包以及安装步骤)
备注:
①该链接中的教程分为2个部分:一是安装虚拟机,二是在虚拟机下安装Linux(ubuntu-18.04)系统。如果已经安装虚拟机则只需要操作第二部分。

②在安装步骤中的第12个如图所示,不要选择勾选图中的箭头所指,要选择第一个 NAT模式 ,否则可能会导致进入ubuntu无法联网,为后面的带来麻烦。
③在第24个步骤如图所示。在设置密码时候要查看小键盘是否打开,否则可能会导致数字未被按上去,建议输入6位密码。

3.JDK

选择linux下的安装包
官网:Java Downloads | Oracle

我选择的是:jdk-8u191-linux-x64.tar.gz

附上百度网盘链接如下
链接:https://pan.baidu.com/s/1HJcWrucJ-w6jCTWaNDYpJA
提取码:2cd7

–来自百度网盘超级会员V3的分享

4.Hadoop

要是去官网的话可以参考:
如何在Ubuntu 18.04上以独立模式安装Hadoop

我选择的是:hadoop-2.7.1.tar.gz

附上百度网盘链接如下:
链接:https://pan.baidu.com/s/1JAruGtDK6wVny7-lH1ZWvQ
提取码:mbhs

–来自百度网盘超级会员V3的分享

二、linux中安装VMwareTools

①安装VMwareTools后,可以实现主机与虚拟机之间的文件拖拽

②linux中 复制 = ctrl + shit +c 黏贴 = ctrl + shit +v(后续会用到)

③安装步骤请参考该博主[daixiangcn]:如何在linux中安装VMwareTools

三、ubuntu18.04安装Hadoop

①首先将jdk-8u191-linux-x64.tar.gz和hadoop-2.7.1.tar.gz从主机拖拽到虚拟机桌面。

②后续操作均在linux 下Xshell终端进行,打开终端快捷键: ctrl + alt +t

③后续操作中的密码如果自己没有进行更改,则为创建ubuntu时的用户密码

1.更新apt包
sudo apt-get update
2.安装SSH server
sudo apt-get install openssh-server
3.配置SSH
ssh localhost
exit 

输入密码登录本机和退出本机

如果需要无密码登录

在进行了初次登陆后,会在当前家目录用户下有一个.ssh文件夹,进入该文件夹下:

cd ~/.ssh/ 

使用rsa算法生成秘钥和公钥对:

ssh-keygen -t rsa

运行后一路回车就可以了,其中第一个是要输入秘钥和公钥对的保存位置,默认是在:.ssh/id_rsa

生成完后就可以看到这一对的位置:
Your identification has been saved in /home/ykt/.ssh/id_rsa.
Your public key has been saved in /home/ykt/.ssh/id_rsa.pub.

然后把公钥加入到授权中:

cat ./id_rsa.pub >> ./authorized_keys 

再次ssh localhost的时候就可以无密码登陆了。

4.安装JDK

首先检查是否已经安装

java -version

如果没有进行安装:则进行下列操作

我选择的是:jdk-8u191-linux-x64.tar.gz

为了方便,为其单独创立一个文件夹:然后将其放到该目录下

sudo mkdir -p /usr/local/java

将 jdk-8u191-linux-x64.tar.gz移动到 /usr/local/java/,因为我之前将该压缩包移动到了虚拟机的桌面上,就是/home/xue/桌面/(其中xue为我的用户名。具体位置以自己的为准)

sudo mv /home/xue/桌面/jdk-8u191-linux-x64.tar.gz /usr/local/java/

进入该目录进行解压

cd /usr/local/java
sudo tar xvzf jdk-8u191-linux-x64.tar.gz

解压成功后会在当前目录下看到 :jdk1.8.0_191文件夹

然后删除安装包

sudo rm jdk-8u191-linux-x64.tar.gz 
5.配置JDK

【后续的操作中会用到 Linux编辑器vi,如果没有接触过的可以参考“Linux编辑器vi使用方法详细介绍”Linux编辑器vi使用方法详细介绍】

下列内容均参考博主weixin_42001089的ubuntu18.04安装Hadoop部分根据情况做了改动。
设置环境变量:打开环境变量的配置文件

sudo vi /etc/profile

(如果vi 不可以,试试换成vim )

在末尾添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_191        
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

(我的版本号是jdk1.8.0_191,具体的请以自己的为准)
告诉Ubuntu Java JDK的位置:

 
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_191/bin/java" 1
 
 
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_191/bin/javac" 1
 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_191/bin/javaws" 1

相应的将其设为默认方式:

sudo update-alternatives --set java  /usr/local/java/jdk1.8.0_191/bin/java
 
sudo update-alternatives --set javac  /usr/local/java/jdk1.8.0_191/bin/javac
 
sudo update-alternatives --set javaws  /usr/local/java/jdk1.8.0_191/bin/javaws

重新加载环境变量的配置文件:

source /etc/profile

检测:

java -version

出现以下即成功:

6.安装Hadoop

我选择的是:hadoop-2.7.1.tar.gz

将hadoop-2.7.1.tar.gz移动到 /usr/local,因为我之前将该压缩包移动到了虚拟机的桌面上,具体位置以自己的为准。

sudo mv /home/xue/桌面/hadoop-2.7.1.tar.gz /usr/local/

进入该目录进行解压:

cd /usr/local
sudo tar xvzf hadoop-2.7.1.tar.gz

解压成功后会在当前目录下看到 :hadoop-2.7.1文件夹

然后删除安装包:

sudo rm hadoop-2.7.1.tar.gz 

重命名并修改权限:

cd /usr/local/
 
sudo mv ./hadoop-2.7.1/ ./hadoop
sudo chown -R xue ./hadoop

(xue 为我的用户名,具体的请参考自己的)
检测:

 ./usr/local/hadoop/bin/hadoop version

出现以下安装成功:

Hadoop 2.7.1
Subversion https://github.com/apache/hadoop.git -r e30710aea4e6e55e69372929106cf119af06fd0e
Compiled by root on 2018-04-16T09:33Z
Compiled with protoc 2.5.0
From source with checksum 7d6d2b655115c6cc336d662cc2b919bd
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar

7.配置Hadoop ①本地配置

无需做任何东西,上面安装成功即是默认的单机模式:

测试:

cd /usr/local/hadoop
 
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar

可以看到Hadoop自身内置的很多例子:

An example program must be given as the first argument.
Valid program names are:
aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files.
aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files.
bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi.
dbcount: An example job that count the pageview counts from a database.
distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi.
grep: A map/reduce program that counts the matches of a regex in the input.
join: A job that effects a join over sorted, equally partitioned datasets
multifilewc: A job that counts words from several files.
pentomino: A map/reduce tile laying program to find solutions to pentomino problems.
pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method.
randomtextwriter: A map/reduce program that writes 10GB of random textual data per node.
randomwriter: A map/reduce program that writes 10GB of random data per node.
secondarysort: An example defining a secondary sort to the reduce.
sort: A map/reduce program that sorts the data written by the random writer.
sudoku: A sudoku solver.
teragen: Generate data for the terasort
terasort: Run the terasort
teravalidate: Checking results of terasort
wordcount: A map/reduce program that counts the words in the input files.
wordmean: A map/reduce program that counts the average length of the words in the input files.
wordmedian: A map/reduce program that counts the median length of the words in the input files.
wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files.

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input
cd input
ls

可以看到将以下xml作为输入:

capacity-scheduler.xml core-site.xml hadoop-policy.xml hdfs-site.xml httpfs-site.xml kms-acls.xml kms-site.xml yarn-site.xml

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'

查看输出:

cat ./output/*

1 dfsadmin

可以看到在这些xml文件中符合dfs[a-z.]+正则表达式的单词只有一个即dfsadmin

注意:Hadoop默认不会覆盖结果文件,想要再次运行上面实例会提示出错,需要先将./out删除

rm -r ./out

试验完后可以将输入也删掉了

sudo rm -rf input
②伪分布式配置:

伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml,路径在:/usr/local/hadoop/etc/hadoop
打开core-site.xml

cd /usr/local/hadoop/etc/hadoop
vi core-site.xml 

在打开的文件中,下面部分

  

中添加如下配置


        
                hadoop.tmp.dir
                /usr/local/hadoop/tmp
                Abase for other temporary directories.
        
        
                fs.defaultFS
                hdfs://localhost:9000
        

说明:可以看到这里使用的是hdfs://localhost:9000即hdfs文件系统,例如还有淘宝的tfs://,谷歌的gfs://以及本地的file://

打开hdfs-site.xml

vi hdfs-site.xml

在打开的文件中,下面部分

  

中添加如下配置


        
                dfs.replication
                1
        
        
                dfs.namenode.name.dir
                /usr/local/hadoop/tmp/dfs/name
        
        
                dfs.datanode.data.dir
                /usr/local/hadoop/tmp/dfs/data
        

这里的dfs.replication就是指备份的份数

配置说明:(原博主的话)
Hadoop的运行方式是由配置文件决定的(运行Hadoop时会读取配置文件),因此如果需要从伪分布模式切换到非分布式模式,需要删除core-site.xml中的配置项。
此外,伪分布式虽然只需要配置fs.defaultFS和dfs.replication就可以运行(官方教程如此),不过若没有配置hadoop.tmp.dir参数,则默认使用的临时目录为/tmp/hadoop-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行format才行。所以进行了设置,同时也指定dfs.namenode.name.dir和dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

切换回hadoop主目录:/usr/local/hadoop

cd /usr/local/hadoop

NameNode的格式化

./bin/hdfs namenode -format

出现如下即成功:

00000000 using no compression
18/08/20 11:07:16 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 320 bytes saved in 0 seconds .
18/08/20 11:07:16 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/08/20 11:07:16 INFO namenode.NameNode: SHUTDOWN_MSG:

开启NameNode和DataNode守护进程

./sbin/start-dfs.sh

注意:如果报错没有没有JAVA——HOME

则在对应的位置手动添加下面加粗的一行即可:(当前目录是usr/local/hadoop)

cd etc/hadoop/
 
vi hadoop-env.sh

#Set Hadoop-specific environment variables here.
#The only required environment variable is JAVA_HOME. All others are
#optional. When running a distributed configuration it is best to
#set JAVA_HOME in this file, so that it is correctly defined on
#remote nodes.

#The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_191

即可

验证:

jps

3648 DataNode
3941 Jps
2678 NameNode
3095 SecondaryNameNode

同时出现以上四个即成功


注意:

1)如果没有出现:SecondaryNameNode,重启,即运行sbin/stop-dfs.sh关闭进行,然后再次尝试启动尝试)

2)如果没有DataNode,这个情况的发生是由于虚拟机和linux共同作用的结果,虚拟机本身不稳电工。会虚拟机假死的情况,如果说页面已经出现了Datanode的话,那么重启一下,假死现象消失,jps后出现DataNode.

3)如果datanode确实没有启动,可以试着将/usr/local/hadoop/tmp/dfs下的data目录删除,然后重新启动dfs

rm -rf data
 
./sbin/start-dfs.sh
 
jps

笔者就是属于后者这种情况,因为在配置core-site.xml和hdfs-site.xml两个文件时,手动出错,所以多次修改,然后多次使用

*./bin/hdfs namenode -format进行NameNode的格式化,但是这样的话每次都会为NameNode生成新的namespaceID,,但是在hadoop.tmp.dir目录下的DataNode还是保留上次的namespaceID,因为namespaceID的不一致,而导致DataNode无法启动,所以手动删除(删除/usr/local/hadoop/tmp/dfs目录下的data),重新生成datanode
格式化成功以后,后续别再进行格式化。


运行:

上面的单击模式,grep例子读取的是本地数据,伪分布式读取则是HDFS上的数据。

伪分布式和单机的mapreduce基本上都是一样的,最主要的区别就是该模式下要使用HDFS的文件系统。

所以首先需要在HDFS中创建用户目录:

./bin/hdfs dfs -mkdir -p /user/hadoop

然后创建输入文件夹:

./bin/hdfs dfs -mkdir /user/hadoop/input

类似单机模式,将etc/hadoop下所有的xml文件复制到输入

./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

然后查看:

./bin/hdfs dfs -ls /user/hadoop/input

可以看到:

-rw-r–r-- 1 ykt supergroup 7861 2018-08-20 13:15 /user/hadoop/input/capacity-scheduler.xml
-rw-r–r-- 1 ykt supergroup 1028 2018-08-20 13:15 /user/hadoop/input/core-site.xml
-rw-r–r-- 1 ykt supergroup 10206 2018-08-20 13:15 /user/hadoop/input/hadoop-policy.xml
-rw-r–r-- 1 ykt supergroup 1069 2018-08-20 13:15 /user/hadoop/input/hdfs-site.xml
-rw-r–r-- 1 ykt supergroup 620 2018-08-20 13:15 /user/hadoop/input/httpfs-site.xml
-rw-r–r-- 1 ykt supergroup 3518 2018-08-20 13:15 /user/hadoop/input/kms-acls.xml
-rw-r–r-- 1 ykt supergroup 5939 2018-08-20 13:15 /user/hadoop/input/kms-site.xml
-rw-r–r-- 1 ykt supergroup 690 2018-08-20 13:15 /user/hadoop/input/yarn-site.xml

运行grep(该流程的mapreduce就和单机一样了,不一样的就是从hdfs文件系统取输入)

 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep /user/hadoop/input output 'dfs[a-z]+'

查看结果:

./bin/hdfs dfs -cat output/*

1 dfsadmin

可以看到和单机模式一样的结果
关闭Hadoop:

./sbin/stop-dfs.sh

下次开启Hadoop:

./sbin/start-dfs.sh

从以上可以看出:每次操作hadoop时都得切换到目录/usr/local/hadoop/bin 或是/usr/local/hadoop/sbin下,所以还是给hadoop配置一下环境变量比较方便:

sudo vi /etc/bash.bashrc 

最后在任意位置试一下hadoop

hadoop version

配置完环境变量以后:
开启Hadoop:

start-dfs.sh

关闭Hadoop:

stop-dfs.sh
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号