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 --重启
按如下步骤进行设置:
设置完开机。
2 Xshell连接下载安装包直接安装Xshell和Xftp,然后打开Xshell。
用以下命令可查看虚拟机ip地址:
ip addr
三台虚拟机获取三个会话:
3 更改主机名vi使用基本命令
进入vi后是命令行模式:
按以下进入插入模式:
按Esc键返回命令行模式
如果装主机的时候没配置就现在配置
三台虚拟机都要执行:
sudo vi /etc/hostname
把原来的删除,分别改成master,slave1,slave2.
我这里用户名是hadoop,如果一开始安装的时候设置其他的想修改可参考以下教程:
https://blog.csdn.net/m0_67401606/article/details/123651879
注意:更改用户名的操作不要在Xshell中执行,直接在虚拟机命令行执行!
4 配置hosts文件三台主机分别执行:
sudo vi /etc/hosts
把原来里面的localhost删除
加入以下内容:(注意三台都加)
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 --其他主机就修改主机名
不需要密码即成功。
4 JDK8安装 1 环境准备在/home/hadoop创建install文件夹用来保存安装的软件,
创建package文件夹用来保存安装包。
创建文件夹命令
mkdir install mkdir package
打开文件传输助手Xftp,传入JDK安装包(打开虚拟机目录直接拖拽即可。)
2 安装回到Xshell,在master中,打开安装包所在目录。
执行以下命令:
sudo tar -zxvf jdk-8u331-linux-x64.tar.gz -C ~/install3 配置环境变量
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/bin4 使环境配置生效
source /etc/profile5 查看配置
java -version6 将文件夹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/profile5 Scala安装 1 安装
拖入安装包,打开安装包所在目录:
sudo tar -zxvf scala-2.12.16.tgz -C ~/install2 配置环境变量
sudo vi /etc/profile
添加以下内容并保存:
export SCALA_HOME=/home/hadoop/install/scala-2.12.16 export PATH=$PATH:$SCALA_HOME/bin3 使环境配置生效
source /etc/profile4 查看是否配置成功
scala -version5 将文件夹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.166 其他节点配置和环境变量
复制粘贴就行,下面指令我一直用不了,想用自己CSDN解决。
sudo scp /etc/profile hadoop@slave1:/etc sudo scp /etc/profile hadoop@slave2:/etc6 Hadoop安装 1 安装
拖入安装包,打开安装包所在目录:
tar -zxvf hadoop-3.3.3.tar.gz -C ~/install2 修改配置文件
如果路径不同记得查看修改,相同直接复制粘贴就行
进入hadoop安装目录的/etc/hadoop目录下
core-site.xmlvi core-site.xml
hdfs-site.xmlfs.default.name hdfs://master:9000 hadoop.tmp.dir file:/home/hadoop/hadoop/tmp
vi hdfs-site.xml
mapred-site.xmldfs.namenode.name.dir file:/home/hadoop/install/hadoop-3.3.3/tmp/dfs/name dfs.datanode.data.dir file:/home/hadoop/install/hadoop-3.3.3/tmp/dfs/data dfs.namenode.secondary.http-address master:9001 dfs.replication 2 dfs.webhdfs.enabled true
vi mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888 yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3 mapreduce.map.env HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3 mapreduce.reduce.env HADOOP_MAPRED_HOME=/home/hadoop/install/hadoop-3.3.3
这个需要复制一份备份:
touch mapred-site.xml.template
cp mapred-site.xml mapred-site.xml.templateyarn-site.xml
vi yarn-site.xml
hadoop-env.shyarn.resourcemanager.hostname master yarn.nodemanager.aux-services mapreduce_shuffle yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800
vi hadoop-env.sh
添加以下内容:
export JAVA_HOME=/home/hadoop/install/jdk1.8.0_331workers
vi workers
加入以下内容
master slave1 slave23 配置环境变量
sudo vi /etc/profile
添加以下内容并保存:
export HADOOP_HOME=/home/hadoop/install/hadoop-3.3.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin4 使环境配置生效
source /etc/profile5 将文件夹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.36 其他节点配置和环境变量
两台slave直接执行一遍步骤(3).
使环境变量生效
source /etc/profile7 格式化namenode节点
回到master主机
hadoop namenode -format
注意:只需要格式化一遍,如果启动hadoop验证有问题需要重新格式化,需要删除三个节点安装目录下的tmp和logs文件夹!
8 启动hadoopstart-all.sh --启动集群 stop-all.sh --关闭集群
得到以下结果正确:
三台主机分别执行
jps
master:
slave1和slave2:
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.12 创建用于存储数据和日志的文件夹
cd /home/hadoop/install/zookeeper-3.7.1 mkdir data mkdir logs3 创建配置文件
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:38884 修改myid文件
注意:id和host与zoo.cfg中配置的相匹配
cd /home/hadoop/install/zookeeper-3.7.1/data
echo '1' > myid5 将文件夹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修改为36 环境变量配置
三台机器都要执行:
sudo vi /etc/profile
加入:
export ZOOKERPER_HOME=/home/hadoop/install/zookeeper-3.7.1 export PATH=$PATH:$ZOOKERPER_HOME/bin
环境变量生效:
source /etc/profile7 启动zookeeper
注意:所有节点都需要启动!!
zkServer.sh start
三台机器输入:
jps
得到以下结果就是正确的:(三台机器都有QuorumPeerMain进程)
master:
slave:
8 Hbase安装 1 安装拖入安装包,打开安装包所在目录:
tar -zxvf hbase-2.4.12-bin.tar.gz -C ~/install2 修改配置文件
cd /home/hadoop/install/hbase-2.4.12/confhbase-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
加入:
regionservershbase.rootdir hdfs://master:9000/hbase hbase.cluster.distributed true hbase.master master:6000 hbase.zookeeper.quorum master,slave1,slave2 hbase.zookeeper.property.dataDir /home/hadoop/install/zookeeper-3.7.1/data
vi regionservers
加入:
master slave1 slave23 hadoop上创建文件目录
hadoop fs -mkdir /hbase4 配置环境变量
三台机器都要执行:
sudo vi /etc/profile
加入:
export HBASE_HOME=/home/hadoop/install/hbase-2.4.12 export PATH=$PATH:$HBASE_HOME/bin
环境变量生效:
source /etc/profile5 将文件夹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.126 启动进程
只需要master节点启动就行(除了zookeeper三节点启动,其他都是master节点启动)
start-hbase.sh --启动 stop-hbase.sh --关闭
使用查看指令:
jps
得到以下结果即正确:
master:
slave:
9 Spark安装 1 安装拖入安装包,打开安装包所在目录:
tar -xzvf spark-3.3.0-bin-hadoop3.tgz -C ~/install2 修改配置文件
进入到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.confspark-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=1024mworkers
vi workers
加入:
master slave1 slave2spark-defaults.conf
vi spark-defaults.conf
加入:
spark.master spark://master:70773 配置环境变量
三台都配置!!
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
使环境配置生效
source /etc/profile4 将文件夹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-hadoop35 启动
由于hadoop和spark启动指令一样,spark启动需要进入目录文件下
cd /home/hadoop/install/spark-3.3.0-bin-hadoop3/sbin ./start-all.sh --启动 ./stop-all.sh --关闭6 验证
master
slave:
10 HBase命令行实现增删查改 1 进入客户端命令行hbase shell
使用指令查看所有的指令
help2 创建命名空间
create_namespace 'hadoop'3 对表格增删改查 创建表格
create 'hadoop:student','info','msg' --创建表格不需要添加列名,只要创建列族就行。查看表格信息
desc 'hadoop:student'修改表格
'hadoop:student',NAME=>'msg',VERSIONS=>3 --修改列族信息 alter 'hadoop:student','delete'=>'msg' --删除列族删除表格
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'
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'删除数据
两个格式:
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
也就是说每个单元格都有三个版本,如果使用第一中格式删除,只会删除最新的版本,第二张格式删除那么全部版本都删除掉。
这里我向同一个单元格再次加入两个数据:
put 'hadoop:student','1000','info:name','super_cool0' put 'hadoop:student','1000','info:name','super_cool00'
查看:1000行显示了最新的数据。
这时候我们删除最新的数据:
delete 'hadoop:student','1000','info:name'
可以看到,这个单元格还有数据,只不过是上个版本的。
然后我们删除这个单元格的全部版本的数据,也就是清空这个单元格。
deleteall 'hadoop:student','1000','info:name'11 总结
注意版本兼容性,我这几个版本兼容性是对的,若是想装其他版本,最好查一下兼容性。



