虚拟机上进行Hadoop伪分布式部署并进行大数据处理_基于virtualbox虚拟机部署伪分布式hadoop环境

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2:点击Products并点击Workstation Pro

3:下拉并找到试用版VMware下载

4:下拉并找到Windows版本VMware下载虚拟机

Ubuntu20.04.6.iso镜像下载(单纯的20.04没有terminal,换成了20.04.6才有):

(虚拟机相当于一个电脑壳,镜像相当于壳里的灵魂,才组成了一个完整的东西)

1:去Ubuntu官网下载镜像,官网链接:

Enterprise Open Source and Linux | Ubuntu

2:下载桌面版的Ubuntu

3:下拉去找以前的版本

等待大概30min下完

虚拟机配置:

1:点击VMware并点击创建新的虚拟机

2:选择自定义然后下一步,硬件兼容性不管直接下一步

3:选择自己刚才下载好的镜像的路径

3:填写安装信息(登录系统要用,这里记好,下面的密码为123456,可自己设置)

4:命名虚拟机不管,直接下一步。

(默认配置足够用了,直接下一步)

5:一直下一步到配置虚拟磁盘大小为40GB,然后一直下一步到结束。

虚拟机与主机联网配置(不联网linux的安装指令和去网页下载东西都不行,这部分比较多,沉下心操作):

1:启动虚拟机等待其安装系统结束

2:配置网络(此时虚拟机是用不了网络的)

因为创建虚拟机的时候使用的是NAT模式,使用的是VMnet8,在自己的windows系统电脑中使用win+R并输入cmd,在命令行界面输入ipconfig:

We can see that VMnet8’s ip address is192.168.200.1,当然不同的电脑在不同的地区不一样,看自己的电脑就行。

3:网关与网段的介绍(步骤4的前导知识)

网段:网络地址相同的IP地址属于同一网段,即同一子网。

网关:同一网段(子网)间终端可直接通信,不在同一网段(子网)的终端不能直接通信,需要通过网关才能通信。

4:点击VMware的虚拟网络编辑器

5:点击VMnet8然后点击NAT设置,并将网关设置为与子网IP前三个数字相同但是最后一个数字为2-254中任意一个数字(我以2为例),保证宿主机与虚拟机网关相同。

6:在windows系统中的控制面板一直打开到网络连接位置:

7:右键VMnet8的属性

8:右键Internet协议版本4(TCP/IPV4)的属性,并设置默认网关与第5步相同的网关并点击确定,每个人的电脑是不一样的。

9:打开虚拟机的火狐浏览器,左边导航栏的那只狐狸图标,然后点击setting,并修改搜索引擎search为bing

10:即可上网浏览(这个镜像没有中文输入法,命令可搜索其它博客,因为用不到,所以我没下载)

Xshell安装(去官网下载即可):

虚拟机上安装ssh并用xhell连接虚拟机

能否用xshell链接虚拟机,需要被连接机器上安装有ssh。

ssh安装步骤:

1:在Ubuntu桌面右键点击Open in Terminal

2:输入sudo su到root用户下面

3:输入下面命令(如果哪条指令没有就可以去网上搜安装命令):

安装ssh

apt-get install openssh-server
cd /etc/ssh/
vim sshd_config

注意:

修改为:

ssh localhost

输入yes,然后乱输,一直结束,然后直接往下操作,别管他的报错。

cd ~/.ssh/
ssh-keygen -t rsa

一直回车

cat ./id_rsa.pub >> ./authorized_keys

4:输入ifconfig,查看ens33的inet为多少,然后用xshell去连接,这里我的是192.168.200.129

5:在xshell新建会话

6:输入虚拟机的ip地址

7:双击master

8:因为虚拟机信息就用的master

这里的密码是自己虚拟机的密码

这样就连接上自己的虚拟机了

JAVA环境安装

1:在https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下载

2:在hadoop官网下载hadoop-2.7.7

3:在Ubuntu命令行中安装sz命令与rz命令(记得在xshell中使用sudo su到root用户)

apt-get install lrzsz

4:

cd /home/master/
mkdir bighomework
cd bighomework

5:从windows上传文件到Ubuntu上面

rz

6:解压这两个文件:

tar -zxvf jdk-8u371-linux-x64.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz

7: 配置环境变量

cd /etc
vim profile

在文件中输入(注意这个master路径是不是自己虚拟机的,不要直接粘了就不管了)

export JAVA_HOME=/home/master/bighomework/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/home/master/bighomework/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存文件并退出

执行

source profile

java -version
hadoop version

可以看到

配置hadoop-env.sh

cd /home/master/bighomework/hadoop-2.7.7/etc/hadoop
vim hadoop-env.sh

输入

export JAVA_HOME=/home/master/bighomework/jdk1.8.0_371
export HADOOP_HOME=/home/master/bighomework/hadoop-2.7.7

配置core-site.xml

vim core-site.xml
cd /home/master/bighomework/hadoop-2.7.7
mkdir tmp
cd /home/master/bighomework/hadoop-2.7.7/etc/hadoop
vim core-site.xml

输入

  <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/master/bighomework/hadoop-2.7.7/tmp</value>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>

配置hdfs-site.xml

vim hdfs-site.xml
<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
<property>
		<name>dfs.namenode.name.dir</name>
		<value>/home/master/hadoop-2.7.7/tmp/dfs/name</value>
</property>
<property>
		<name>dfs.datanode.data.dir</name>        
		<value>/home/master/hadoop-2.7.7/tmp/dfs/data</value>
</property>

cd /home/master/bighomework/hadoop-2.7.7/tmp
mkdir dfs
cd dfs
mkdir name
mkdir data

启动hadoop集群节点

hdfs namenode -format
cd /home/master/bighomework/hadoop-2.7.7/sbin
start-dfs.sh 

等待结束(可能会暂停输入yes)

jps

可以看到DataNode与NameNode与SecondaryNameNode启动成功

cd /home/master/bighomework/hadoop-2.7.7/etc/hadoop
vim yarn-site.xml

输入

<property>  
		<name>yarn.nodemanager.aux-services </name>  
		<value>mapreduce_shuffle</value>  
</property>

vim mapred-site.xml.template 

输入

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

cd /home/master/bighomework/hadoop-2.7.7/sbin
start-all.sh

等待运行结束

jps

可以发现六个东西都出来了

数据处理:

1:这是一个乱码csv

2:将该csv以txt文本形式打开

3:txt是不乱码的

4:点击文件的另存为

5:选择带有BOM的UTF-8进行保存(也可以ANSI,只是不知道后面的idea代码会不会识别ANSI格式文字不乱码)

  6:csv正常显示

处理好文件后将文件上传到bighomework文件夹下,再创建一个project(后面用)

hadoop dfs -put data.csv /
hadoop dfs -ls /

文件已上传上去

下载idea编译器

在VMware虚拟机的火狐浏览器中输入idea

点击下载后,下拉页面并下载社区版的idea,这是一个tar.gz,按照前面的解压缩命令可以执行安装。

下载完后进入xshell输入

cd /home/master/Downloads

默认的Ubuntu下载都在这个文件夹下

tar -zxvf ideaIC-2023.1.3.tar.gz

但凡下载的东西都在在Downloads下面运行

在VMware虚拟机打开Open in Terminal

sudo su
cd ~/Downloads/idea-IC-231.9161.38/bin
./idea.sh

于是打开了idea,开始点击New Project,创建一个Maven工程文件,我将工程文件放在了

/home/master/bighomework/project下面

JDK路径为下载的安装包

在Pom.xml文件中添加

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spark.version>3.1.2</spark.version>
        <scala.version>2.12</scala.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-hdfs-client</artifactId>
                </exclusion>
            </exclusions>
            <!--      <scope>provided</scope>   -->
        </dependency>
		 <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.7</version>
        </dependency>
		</dependencies>

点击右侧Maven,并点击这个圈圈进行更新。

在Main类中代码改为如下(注意爆红的类引入类,之前Pom已经把这些类下好了),通过Spark读取之前上传的csv的文件:

public class Main {
    public static void main(String[] args) {
        SparkConf sparkConf = new SparkConf()
                .setAppName("testsparkjava").setMaster("local");
        SparkContext sparkContext = new SparkContext(sparkConf);
        RDD<String> rdd = sparkContext.textFile("hdfs://localhost:9000/data.csv",
                1);
        System.out.println(rdd.first());
    }
}

执行结果如下:

mysql配置:

1:打开Open in Terminal

2:

sudo su
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
mysql
SHOW VARIABLES LIKE 'validate_password%';

Mysql命令一定是以冒号结尾的

这里修改密码长度的8为6,方便设置密码为123456,将密码的规则设置为最低级;

set global validate_password.policy=0;
set global validate_password.length=6;

修改成功:

3:开始给所有用户赋予访问权限:

create user 'root'@'%' identified by '123456’;
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit

exit回到主命令行,不是mysql里面了。

4:

sudo mysql_secure_installation

填入密码

Do you wish to continue with the password provided? 填y
Remove anonymous users?填n
Disallow root login remotely?填n
Remove test database and access to it? 填n
Reload privilege tables now? (Press y|Y for Yes, any other key for No) 填n

5:之后登录mysql使用命令

mysql -u root –p

然后键入自己的密码(第6步,我设的是123456)

6:进入mysql后,

show  databases;

7:开始创建自己的数据库和表:

create database hotel;

use hotel;
create table room (province varchar(60),rooms varchar(16));
ALTER TABLE room CONVERT TO CHARACTER SET utf8mb4;
insert into room(province,rooms) values("四川","20");
select * from room;

此时mysql已经配置好了。

idea测试mysql能否使用

1:检查自己mysql的版本mysql –V,我的是8.0.33,然后进入Maven Repository: mysql » mysql-connector-java (mvnrepository.com)")搜索Maven中对应版本的connector连接器。

2:打开VMware虚拟机的idea工程文件,并导入该段代码到Pom.xml

一开始可能导不进去,下面命令行会有蓝色报错force import开始强制导入,点一下,多试试,会成功的。

3:在Main类里面写下下面代码,目的是向mysql表插入"sichuan",“20”,注意String driver可能不一样,mysql5.x与mysql8.x不一样,我的是8.x的,所以有cj

package不要复制,看看自己的工程的package,保留它。

package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.locks.ReentrantReadWriteLock;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        insertData("room","sichuan","20");
    }
    public static void insertData(String tableName, String data1, String data2) throws ClassNotFoundException, SQLException {
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/hotel?useUnicode=true&characterEncoding=utf8";
        String user = "root";
        String password = "123456";
        Class.forName(driver);


![img](https://img-blog.csdnimg.cn/img_convert/d23cc57b6e0ca652f600f8ec82d6436a.png)
![img](https://img-blog.csdnimg.cn/img_convert/19fd2daf5952a43d34c0b08fd8a5e733.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

ception;
import java.util.concurrent.locks.ReentrantReadWriteLock;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        insertData("room","sichuan","20");
    }
    public static void insertData(String tableName, String data1, String data2) throws ClassNotFoundException, SQLException {
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/hotel?useUnicode=true&characterEncoding=utf8";
        String user = "root";
        String password = "123456";
        Class.forName(driver);


[外链图片转存中...(img-QAIWVxiE-1715520414242)]
[外链图片转存中...(img-QTmhBp5N-1715520414243)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值