HNU2022夏季小学期大数据并行处理集群环境配置

1 环境安装

1.1 环境说明

Window系统8G内存+virtualbox+ Ubuntu16 server版 虚拟机 * 3

虚拟机安装教程可借鉴:(注意更改用户名和主机名)

https://blog.csdn.net/weixin_43793181/article/details/116269816

用户名建议改hadoop,主机名改master,slave1,slave2。因为下面教程都是按照这几个用户名和主机名进行配置的,会比较方便)

软件版本说明:

Ubuntu16.04 server * 3
JDK8:jdk-8u331-linux-x64.tar.gz
Scala:scala-2.12.16.tgz
Hadoop:hadoop-3.3.3.tar.gz
Zookeepe:apache-zookeeper-3.7.1-bin.tar.gz
Hbase:hbase-2.4.12-bin.tar.gz
Spark:spark-3.3.0-bin-hadoop3.tgz

连接虚拟机服务器工具:

Xshell-7.0.0087p.exe --传输命令
Xftp-7.0.0085p.exe  --文件传输

为什么要连接工具:server版无法复制粘贴命令行也无法直接拖拽文件进入,使用连接工具方便很多。

文件百度网盘地址:

https://pan.baidu.com/s/1FY6h9DANQ2u_syyXyyWHgQ

提取码:ybum

2 主机配置

1 设置桥接模式

注意:三台虚拟机都要配置!!!

装完虚拟机之后,先关机,关机命令

poweroff --关机
reboot  --重启

按如下步骤进行设置:

image-20220630092932328

设置完开机。

2 Xshell连接

下载安装包直接安装Xshell和Xftp,然后打开Xshell。

image-20220630093336561

用以下命令可查看虚拟机ip地址:

ip addr 

image-20220630093739999

image-20220630093528218

image-20220630093612038

三台虚拟机获取三个会话:

image-20220630093836964

3 更改主机名

vi使用基本命令

进入vi后是命令行模式:

按以下进入插入模式:

image-20220630094649404

按Esc键返回命令行模式

image-20220630094611330

如果装主机的时候没配置就现在配置

三台虚拟机都要执行:

sudo vi /etc/hostname

把原来的删除,分别改成master,slave1,slave2.

image-20220630093919750

image-20220630094007261

image-20220630094030599

我这里用户名是hadoop,如果一开始安装的时候设置其他的想修改可参考以下教程:

https://blog.csdn.net/m0_67401606/article/details/123651879

注意:更改用户名的操作不要在Xshell中执行,直接在虚拟机命令行执行!

4 配置hosts文件

三台主机分别执行:

sudo vi /etc/hosts

把原来里面的localhost删除

加入以下内容:(注意三台都加

image-20220630094441387

3 设置免密登录

以下命令行查看当前路径:

pwd

三台执行顺序按照:master,slave1,slave2避免出错

1.在/home/hadoop目录下执行:(三台都要执行

mkdir .ssh --创建免密管理文件夹
cd .ssh   --进入该文件夹

2.在/home/hadoop/.ssh 目录下执行:(三台都要执行

ssh-keygen -t rsa  --生成密钥

让你输入一些东西,不用管连续一直回车,应该是三次。

3.在/home/hadoop/.ssh 目录下执行:

--设置免密登录
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub slave1

注意这条指令每台主机都要执行三次,分别master,slave1,slave2,注意:自己到自己也要设置!!

4.验证

每台主机都验证一遍到其他三台主机的免密登录,(包括自己)。

ssh master  --其他主机就修改主机名

image-20220630095731615

不需要密码即成功。

4 JDK8安装

1 环境准备

在/home/hadoop创建install文件夹用来保存安装的软件,

创建package文件夹用来保存安装包。

创建文件夹命令

mkdir install
mkdir package

打开文件传输助手Xftp,传入JDK安装包(打开虚拟机目录直接拖拽即可。)

image-20220630100145651

image-20220630100217880

2 安装

回到Xshell,在master中,打开安装包所在目录。

执行以下命令:

sudo tar -zxvf jdk-8u331-linux-x64.tar.gz -C ~/install

3 配置环境变量

sudo vi /etc/profile

输入以下内容:

(如果按照上面来说路径应该一样,路径不一样的话请注意修改)

export JAVA_HOME=/home/hadoop/install/jdk1.8.0_331
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

image-20220630100707027

4 使环境配置生效

source /etc/profile

5 查看配置

java -version

image-20220630101001105

6 将文件夹scp到到其它节点服务器上

master节点执行就行.

scp -r ~/install/jdk1.8.0_331 hadoop@slave1:~/install/jdk1.8.0_331

scp -r ~/install/jdk1.8.0_331 hadoop@slave2:~/install/jdk1.8.0_331

其他节点的环境变量配置:

我是自己复制粘贴的,因为我以下指令执行权限不足,我也懒得修改就直接复制粘贴了。

sudo scp /etc/profile hadoop@slave1:/etc

sudo scp /etc/profile hadoop@slave2:/etc

分别使环境变量生效:(两台slave

source /etc/profile

5 Scala安装

1 安装

拖入安装包,打开安装包所在目录:

sudo tar -zxvf scala-2.12.16.tgz -C ~/install

2 配置环境变量

sudo vi /etc/profile

添加以下内容并保存:

export SCALA_HOME=/home/hadoop/install/scala-2.12.16
export PATH=$PATH:$SCALA_HOME/bin

image-20220630101700825

3 使环境配置生效

source /etc/profile

4 查看是否配置成功

scala -version

image-20220630101749061

5 将文件夹scp到其它节点

scp -r ~/install/scala-2.12.16hadoop@slave1:~/install/scala-2.12.16

scp -r ~/install/scala-2.12.16hadoop@slave2:~/install/scala-2.12.16

6 其他节点配置和环境变量

复制粘贴就行,下面指令我一直用不了,想用自己CSDN解决。

sudo scp /etc/profile hadoop@slave1:/etc

sudo scp /etc/profile hadoop@slave2:/etc

6 Hadoop安装

1 安装

拖入安装包,打开安装包所在目录:

tar -zxvf hadoop-3.3.3.tar.gz -C ~/install

2 修改配置文件

如果路径不同记得查看修改,相同直接复制粘贴就行

进入hadoop安装目录的/etc/hadoop目录下

core-site.xml
vi core-site.xml
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/hadoop/tmp</value>
  </property>
</configuration>
hdfs-site.xml
vi hdfs-site.xml
<configuration>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/install/hadoop-3.3.3/tmp/dfs/name</value>
</property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/install/hadoop-3.3.3/tmp/dfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>

</configuration>

mapred-site.xml
vi mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
  </property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3</value>
</property>
</configuration>


这个需要复制一份备份:

touch mapred-site.xml.template
cp mapred-site.xml mapred-site.xml.template
yarn-site.xml
vi yarn-site.xml
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

hadoop-env.sh
vi hadoop-env.sh

添加以下内容:

export JAVA_HOME=/home/hadoop/install/jdk1.8.0_331
workers
vi workers

加入以下内容

master
slave1
slave2

3 配置环境变量

sudo vi /etc/profile

添加以下内容并保存:

export HADOOP_HOME=/home/hadoop/install/hadoop-3.3.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

image-20220630103051277

4 使环境配置生效

source /etc/profile

5 将文件夹scp到其它节点

scp -r ~/install/hadoop-3.3.3 hadoop@slave1:~/install/hadoop-3.3.3

scp -r ~/install/hadoop-3.3.3 hadoop@slave2:~/install/hadoop-3.3.3

6 其他节点配置和环境变量

两台slave直接执行一遍步骤(3).

使环境变量生效

source /etc/profile

7 格式化namenode节点

回到master主机

hadoop namenode -format

注意:只需要格式化一遍,如果启动hadoop验证有问题需要重新格式化,需要删除三个节点安装目录下的tmp和logs文件夹!

8 启动hadoop

start-all.sh --启动集群
stop-all.sh  --关闭集群

得到以下结果正确:

三台主机分别执行

jps

master:

image-20220630104020724

slave1和slave2:

image-20220630104041231

9 错误原因

如果少了某个节点,自行百度原因.

一般是免密登录的问题,关闭集群之后,分别检查三个节点的免密登录是否还有效。

ssh [master|slave1|slave2] --都不用密码的话我也不懂了,百度就行。

7 Zookeeper安装

1 安装

拖入安装包,打开安装包所在目录:

tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C ~/install

(我嫌文件夹太长,我把安装的文件夹改成了zookeeper-3.7.1)

修改文件夹名字指令:

mv apache-zookeeper-3.7.1 zookeeper-3.7.1

2 创建用于存储数据和日志的文件夹

cd /home/hadoop/install/zookeeper-3.7.1
mkdir data
mkdir logs

3 创建配置文件

cd /home/hadoop/install/zookeeper-3.7.1/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

修改配置文件,改为以下内容:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/install/zookeeper-3.7.1/data 
dataLogDir=/home/hadoop/install/zookeeper-3.7.1/logs
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server.4=slave3:2888:3888
server.5=slave4:2888:3888

image-20220630104931298

4 修改myid文件

注意:id和host与zoo.cfg中配置的相匹配

cd /home/hadoop/install/zookeeper-3.7.1/data
echo '1' > myid

5 将文件夹scp到其它节点

scp -r ~/install/zookeeper-3.7.1 hadoop@slave1:~/install/zookeeper-3.7.1

scp -r ~/install/zookeeper-3.7.1 hadoop@slave2:~/install/zookeeper-3.7.1

其他节点修改myid文件

cd /home/hadoop/install/zookeeper-3.7.1/data
vi myid

slave1修改为2
slave2修改为3

6 环境变量配置

三台机器都要执行:

sudo vi /etc/profile

加入:

export ZOOKERPER_HOME=/home/hadoop/install/zookeeper-3.7.1
export PATH=$PATH:$ZOOKERPER_HOME/bin

image-20220630105455777

环境变量生效:

source /etc/profile

7 启动zookeeper

注意:所有节点都需要启动!!

zkServer.sh start

三台机器输入:

jps

得到以下结果就是正确的:(三台机器都有QuorumPeerMain进程)

master:

image-20220630105647095

slave:

image-20220630105713039

8 Hbase安装

1 安装

拖入安装包,打开安装包所在目录:

tar -zxvf hbase-2.4.12-bin.tar.gz -C ~/install

2 修改配置文件

cd /home/hadoop/install/hbase-2.4.12/conf
hbase-env.sh
vi hbase-env.sh

加入:

export JAVA_HOME=/home/hadoop/install/jdk1.8.0_331
export  HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/home/hadoop/install/hbase-2.4.12/conf
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"  --hadoop与hbase有jar包冲突,以hadoop为主

注释掉以下行:(如果有的话)

#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
hbase-site.xml
vi hbase-site.xml

加入:

<configuration>

<property> 
    <name>hbase.rootdir</name> 
    <value>hdfs://master:9000/hbase</value> 
  </property> 
  <property> 
    <name>hbase.cluster.distributed</name> 
    <value>true</value> 
  </property> 
<property>
              <name>hbase.master</name>
              <value>master:6000</value>
      </property>
<property> 
    <name>hbase.zookeeper.quorum</name> 
    <value>master,slave1,slave2</value> 
  </property> 
<property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>/home/hadoop/install/zookeeper-3.7.1/data</value> 
  </property>

</configuration>
regionservers
vi regionservers

加入:

master
slave1
slave2

3 hadoop上创建文件目录

hadoop fs -mkdir /hbase

4 配置环境变量

三台机器都要执行:

sudo vi /etc/profile

加入:

export HBASE_HOME=/home/hadoop/install/hbase-2.4.12
export PATH=$PATH:$HBASE_HOME/bin

image-20220630110946274

环境变量生效:

source /etc/profile

5 将文件夹scp到其它节点

scp -r ~/install/hbase-2.4.12 hadoop@slave1:~/install/hbase-2.4.12

scp -r ~/install/hbase-2.4.12 hadoop@slave2:~/install/hbase-2.4.12

6 启动进程

只需要master节点启动就行(除了zookeeper三节点启动,其他都是master节点启动)

start-hbase.sh  --启动
stop-hbase.sh  --关闭

使用查看指令:

jps

得到以下结果即正确:

master:

image-20220630111236317

slave:

image-20220630111259814

9 Spark安装

1 安装

拖入安装包,打开安装包所在目录:

tar -xzvf spark-3.3.0-bin-hadoop3.tgz -C ~/install

2 修改配置文件

进入到spark的配置目录下

cd /home/hadoop/install/spark-3.3.0-bin-hadoop3/conf

修改slaves.template、spark-env.sh.template、spark-defaults.conf.template等文件的文件名

mv slaves.template slaves
mv spark-env.sh.template spark-env.sh
mv spark-defaults.conf.template spark-defaults.conf
spark-env.sh
vi spark-env.sh

添加内容保存:

export JAVA_HOME=/home/hadoop/install/jdk1.8.0_331
export SCALA_HOME=/home/hadoop/install/scala-2.12.16
export HADOOP_HOME=/home/hadoop/install/hadoop-3.3.3
export HADOOP_CONF_DIR=/home/hadoop/install/hadoop-3.3.3/etc/hadoop
SPARK_MASTER_IP=master
SPARK_WORKER_MEMORY=1024m
workers
vi workers

加入:

master
slave1
slave2
spark-defaults.conf
vi spark-defaults.conf

加入:

spark.master    spark://master:7077

3 配置环境变量

三台都配置!!

sudo vi  /etc/profile

加入:

#spark
export SPARK_HOME=/home/hadoop/install/spark-3.3.0-bin-hadoop3
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

image-20220630112633345

使环境配置生效

source /etc/profile

4 将文件夹scp到其它节点

scp -r ~/install/spark-3.3.0-bin-hadoop3 hadoop@slave1:~/install/spark-3.3.0-bin-hadoop3

scp -r ~/install/spark-3.3.0-bin-hadoop3 hadoop@slave2:~/install/spark-3.3.0-bin-hadoop3

5 启动

由于hadoop和spark启动指令一样,spark启动需要进入目录文件下

cd /home/hadoop/install/spark-3.3.0-bin-hadoop3/sbin
./start-all.sh  --启动
./stop-all.sh  --关闭

6 验证

master

image-20220630113044037

slave:

image-20220630113105881

10 HBase命令行实现增删查改

1 进入客户端命令行

hbase shell

image-20220701144417220

使用指令查看所有的指令

help

image-20220702104030926

2 创建命名空间

create_namespace 'hadoop'

image-20220702104346855

3 对表格增删改查

创建表格
create 'hadoop:student','info','msg'
/*
命名空间:表名
列族1
列族2
*/
--创建表格不需要添加列名,只要创建列族就行。
查看表格信息
desc 'hadoop:student'

image-20220702105244803

修改表格
'hadoop:student',NAME=>'msg',VERSIONS=>3  --修改列族信息

alter 'hadoop:student','delete'=>'msg'  --删除列族

image-20220702110000205

删除表格
disable  'hadoop:student' --现设置不可用,防止误删
drop 'hadoop:student'

4 对表的内容增删改查

写入数据

命令格式:

  hbase> put 'ns1:t1', 'r1', 'c1', 'value'
  hbase> put 't1', 'r1', 'c1', 'value'
  hbase> put 't1', 'r1', 'c1', 'value', ts1
  hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
  hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
  hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

内容:列名是动态加的,不用新建,直接用

put 命名空间:表 + 行号 + 列族:列名 + 内容
put 'hadoop:student','1000','info:name','super_cool'
put 'hadoop:student','1000','info:age','21'
put 
'hadoop:student','1001','info:name','super_cool1'
put 'hadoop:student','1002','info:name','super_cool2'
读取数据

get 格式

  hbase> t.get 'r1'
  hbase> t.get 'r1', {TIMERANGE => [ts1, ts2]}
  hbase> t.get 'r1', {COLUMN => 'c1'}
  hbase> t.get 'r1', {COLUMN => ['c1', 'c2', 'c3']}
  hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
  hbase> t.get 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}
  hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}
  hbase> t.get 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}
  hbase> t.get 'r1', 'c1'
  hbase> t.get 'r1', 'c1', 'c2'
  hbase> t.get 'r1', ['c1', 'c2']
  hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE'}
  hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE', REGION_REPLICA_ID => 1}

简单来说就是

get+ '命名空间:表名' +过滤信息
get 'hadoop:student','1000'

image-20220702111422345

scan格式

hbase> scan 'hbase:meta'
  hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
  hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
  hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
  hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804000, 1303668904000]}
  hbase> scan 't1', {REVERSED => true}
  hbase> scan 't1', {ALL_METRICS => true}
  hbase> scan 't1', {METRICS => ['RPC_RETRIES', 'ROWS_FILTERED']}
  hbase> scan 't1', {ROWPREFIXFILTER => 'row2', FILTER => "
    (QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"}
  hbase> scan 't1', {FILTER =>
    org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}
  hbase> scan 't1', {CONSISTENCY => 'TIMELINE'}
  hbase> scan 't1', {ISOLATION_LEVEL => 'READ_UNCOMMITTED'}
  hbase> scan 't1', {MAX_RESULT_SIZE => 123456}

简单来说就是

scan+ '命名空间:表名' +过滤信息
scan 'hadoop:student'

image-20220702111749355

删除数据

两个格式:

hbase> t.delete 'r1', 'c1',  ts1

  hbase> t.delete 'r1', 'c1',  ts1, {VISIBILITY=>'PRIVATE|SECRET'}

Hbase的每个的列族都有对应的维护版本,也就是在创建列族的时候设置的,这里演示一下把info列族的维护版本修改为3.

alter 'hadoop:student',NAME=>'info',VERSIONS=>3

image-20220702112256959

也就是说每个单元格都有三个版本,如果使用第一中格式删除,只会删除最新的版本,第二张格式删除那么全部版本都删除掉。

这里我向同一个单元格再次加入两个数据:

put 'hadoop:student','1000','info:name','super_cool0'
put 'hadoop:student','1000','info:name','super_cool00'

查看:1000行显示了最新的数据。

image-20220702130603618

这时候我们删除最新的数据:

delete 'hadoop:student','1000','info:name'

image-20220702130734912

可以看到,这个单元格还有数据,只不过是上个版本的。

然后我们删除这个单元格的全部版本的数据,也就是清空这个单元格。

 deleteall 'hadoop:student','1000','info:name'

image-20220702131034060

11 总结

注意版本兼容性,我这几个版本兼容性是对的,若是想装其他版本,最好查一下兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值