2020.12
macOS
java11
hadoop-3.3.0
spark-3.0.1
hbase 2.3.3
install java11
# 卸载cd /Library/Java/JavaVirtualMachinesrm -rf jdk-11.0.9.jdk
Hadoop
XMU install
hadoop-3.3.0.tar.gz
vim ~/.zshrc# 写入export HADOOP_HOME=/Users/yuan/Software/hadoop/hadoop-3.3.0export PATH=$PATH:$HADOOP_HOME/binsource ~/.zshrcecho $HADOOP_HOMEhadoop version
Hadoop伪分布式配置
Hadoop进程以分离Java进程来运行,节点即作为NameNode也作为DataNode,同时读取HDFS中的文件
/hadoop/etc/hadoop/
- hadoop-env.sh
- core-site.xml
- hdfs-site.xml
```shell
设置JAVA路径
vim hadoop-env.shJAVA CONFIG
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-3.3.0/etc/hadoop
设置临时目录和文件系统,这里是本地主机配置,如果使用远程主机,需要改写ip,同时到/etc/hosts文件中做DNS映射
vim core-site.xml
配置hdfs-site.xml
vim hdfs-site.xml
**配置完成后,执行NameNode的格式化**shell
./bin/hdfs namenode -format
# hadoop 格式化
hadoop namenode -format
# 成功提示:
Storage directory /usr/local/hadoop/hadoop-3.3.0/tmp/dfs/name has been successfully formatted
# 开启NameNode和DataNode的守护进程
./sbin/start-dfs.sh
**!!!Notice**: 多次format会导致namenode和datanode的clusterID不同,导致启动hdfs时,datanode无法正常启动,解决方案shell
cd /usr/local/hadoop/hadoop-3.3.0/tmp/dfs/
vim name/current/version
# 获取 namenode 的 clusterID 复制到datanode中(或者从datanode的log里获得)
vim data/current/version
**启动失败 Error:permission denied**
- 配置 config passwordless sshshell
ssh-copy-id -i ~/.ssh/id_rsa.pub yuan@localhost
# 如果是远程服务器,更改user@remotehost
[configuring-passwordless-ssh](http://mynotesonhadoop.blogspot.com/2017/07/configuring-passwordless-ssh-from.html?m=1)
**成功启动**<br />`jps` JavaVirtualMachineProcessStatus,查看运行的Java进程shell
# 验证成功启动dfs
jps
#out:
81920 DataNode
82053 SecondaryNameNode
82541 Jps
81820 NameNode
54463
# 如果失败,则关闭,查看日志,重新配置,重新启动
sbin/stop-dfs.sh
cat ./logs/…
**成功启动后,打开**[http://localhost:9870/](http://localhost:9870/)<br />**
<a name="vKblQ"></a>
## 运行Hadoop伪分布式实例
**<br />**在HDFS中创建用户目录**<br />`hdfs dfs -mkdir -p /user/hadoop`
**将 `./etc/hadoop` 中的xml文件作为输入文件复制到 `/user/hadoop/input` 中**shell
# input是相对路径
hdfs dfs -mkdir input
hdfs dfs -put ./etc/hadoop/xml input
# 查看HDFS中文件列表
hdfs dfs -ls input
```
伪分布式运行MapReduce方式与单机模式相同,唯一区别在于伪分布式读取的是HDFS中的文件## 启动YARN YARN, Yet Another Resource Negotiator
伪分布式不启动YARN也可以,一般不会影响程序执行 - YARN是从MapReduce中分离出来的,负责资源管理与任务调度 - YARN运行在MapReduce之上,提供高可用性和高扩展性 修改配置* ```shell cd ./etc/hadoop vim mapred-site.xml
vim yarn-site.xml
**启动YARN**```shellstart-dfs.shstart-yarn.sh# 开启历史服务器,查看Web中任务运行情况mr-jobhistory-daemon.sh start historyserver
启动成功后:调度web页面
3.0+版本貌似不需要(如果不需要启动 YARN 时,需重命名 mapred-site.xml 为 mapred-site.xml.template)**
Spark
清华源
spark-3.0.1-bin-hadoop3.2.tgz
install
sudo tar -zxf <spark_name.tgz> -C /usr/local/cd /usr/localsudo mv <spark_name.tgz> ./spark/# 赋予spark权限给yuan用户sudo chown -R yuan spark
config
使用Spark时需要先启动Hadoop
cd /usr/local/spark/confcp spark-env.sh.template spark-env.shvim spark-env.sh# 挂接hadoop,实现访问export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-3.3.0 classpath)vim ~/.zshrcexport SPARK_HOME=/usr/local/spark/spark-3.0.1-bin-hadoop3.2export PATH=$PATH:$SPARK_HOME/bin
将Hadoop配置为伪分布式:
- HDFS 一个管家节点namenode, 其他是分布式的数据节点datanode
- 伪分布式:将namenode和datanode放在一个主机上
Spark 部署模式
- 单机模式 local 可以实现与HDFS交互
- 集群模式
- Standalone 使用Spark自带的资源管理器实现资源管理和调度
- YARN
- Mesos
hbase 连接
我们需要将必要的jar包拷贝到spark的jars文件下**
cp $SPARK_HOME/jarsmkdir hbasecd hbasecp $HBASE_HOME/lib/hbase*.jar ./cp $HBASE_HOME/lib/guava*.jar ./
此外需要从网上下载一个jar包,可将hbase数据变为python可读取的数据格式,将其放到jars/base 文件下
https://dl.bintray.com/typesafe/maven-releases/org/apache/spark/spark-examples_2.11/1.6.0-typesafe-001/
**
spark-env.sh 配置
vim $SPARK_HOME/conf/spark-env.shexport SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-3.3.0 classpath):$(/usr/local/hbase/hbase-2.2.6 classpath):/usr/local/spark/spark-3.0.1-bin-hadoop3.2/jars/hbase/*
Hbase
http://dblab.xmu.edu.cn/blog/install-hbase/
install
https://downloads.apache.org/hbase/2.3.3/
sudo tar -zxf ~/Downloads/hbase-2.3.3-bin.tar.gz -C /usr/local/hbasevim ~/.zshrcexport PATH=$PATH:/usr/local/hbase/hbase-2.3.3/binsource ~/.zshrcsudo chown -R yuan /usr/local/hbasehbase version
config
伪分布式
- hbase.rootdir指定HBase的存储目录
- hbase.cluster.distributed设置集群处于分布式模式 ```shell vim /usr/local/hbase/hbase-2.3.3/conf/hbase-env.sh export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home export HBASE_CLASSPATH=/usr/local/hadoop/hadoop-3.3.0/conf export HBASE_MANAGES_ZK=true
vim /usr/local/hbase/hbase-2.3.3/conf/hbase-site.xml
**启动**```shellstart-fds.shstart-hbase.shjps# 进入交互环境hbase shell
# XMU 建议配置<property><name>hbase.rootdir</name><value>hdfs://localhost:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property>
**
常见异常
hbase shell 无法正常使用
Problem
启动hbase shell 后,HMaster自动掉了,log日志显示java连接错误,根本原因在于hbase自带的zookeeper问题(细节问题还未找到)
Solution**
独立下载zookeeper,默认配置直接运行zkServer,jps显示QuorumPeerMain
For macOS
brew install zookeeperbrew services start zookeeperbrew services list
stop-hbase.sh 一直等待
(关闭顺序有问题/配置文件修改)
# 关闭主机守护进程hbase-daemon.sh stop master# 关闭hbase集群stop-hbase.sh# jps查看有未成功关闭的hbase进程kill -9 PID
PleaseHoldException: Master is initializing
https://blog.csdn.net/weixin_46254308/article/details/106384087#stophbasesh_111
