2020.12
macOS
java11
hadoop-3.3.0
spark-3.0.1
hbase 2.3.3

install java11

java11

  1. # 卸载
  2. cd /Library/Java/JavaVirtualMachines
  3. rm -rf jdk-11.0.9.jdk

Hadoop

XMU install
hadoop-3.3.0.tar.gz

  1. vim ~/.zshrc
  2. # 写入
  3. export HADOOP_HOME=/Users/yuan/Software/hadoop/hadoop-3.3.0
  4. export PATH=$PATH:$HADOOP_HOME/bin
  5. source ~/.zshrc
  6. echo $HADOOP_HOME
  7. hadoop version

Hadoop伪分布式配置

Hadoop进程以分离Java进程来运行,节点即作为NameNode也作为DataNode,同时读取HDFS中的文件
/hadoop/etc/hadoop/

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml ```shell

    设置JAVA路径

    vim hadoop-env.sh

    JAVA 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

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

配置hdfs-site.xml

vim hdfs-site.xml

dfs.permissions false dfs.replication 1 dfs.namenode.name.dir file:/usr/local/hadoop/hadoop-3.3.0/tmp/dfs/name dfs.datanode.data.dir file:/usr/local/hadoop/hadoop-3.3.0/tmp/dfs/data **配置完成后,执行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 mapreduce.framework.name yarn

vim yarn-site.xml

yarn.nodemanager.aux-services mapreduce_shuffle

  1. **启动YARN**
  2. ```shell
  3. start-dfs.sh
  4. start-yarn.sh
  5. # 开启历史服务器,查看Web中任务运行情况
  6. 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

  1. sudo tar -zxf <spark_name.tgz> -C /usr/local/
  2. cd /usr/local
  3. sudo mv <spark_name.tgz> ./spark/
  4. # 赋予spark权限给yuan用户
  5. sudo chown -R yuan spark

config

使用Spark时需要先启动Hadoop

  1. cd /usr/local/spark/conf
  2. cp spark-env.sh.template spark-env.sh
  3. vim spark-env.sh
  4. # 挂接hadoop,实现访问
  5. export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-3.3.0 classpath)
  6. vim ~/.zshrc
  7. export SPARK_HOME=/usr/local/spark/spark-3.0.1-bin-hadoop3.2
  8. export PATH=$PATH:$SPARK_HOME/bin

将Hadoop配置为伪分布式:

  • HDFS 一个管家节点namenode, 其他是分布式的数据节点datanode
  • 伪分布式:将namenode和datanode放在一个主机上

Spark 部署模式

  • 单机模式 local 可以实现与HDFS交互
  • 集群模式
    • Standalone 使用Spark自带的资源管理器实现资源管理和调度
    • YARN
    • Mesos

hbase 连接


我们需要将必要的jar包拷贝到spark的jars文件下**

  1. cp $SPARK_HOME/jars
  2. mkdir hbase
  3. cd hbase
  4. cp $HBASE_HOME/lib/hbase*.jar ./
  5. 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 配置

  1. vim $SPARK_HOME/conf/spark-env.sh
  2. export 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/

  1. sudo tar -zxf ~/Downloads/hbase-2.3.3-bin.tar.gz -C /usr/local/hbase
  2. vim ~/.zshrc
  3. export PATH=$PATH:/usr/local/hbase/hbase-2.3.3/bin
  4. source ~/.zshrc
  5. sudo chown -R yuan /usr/local/hbase
  6. hbase 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 hbase.rootdir hdfs://localhost:9000/hbase hbase.cluster.distributed true

  1. **启动**
  2. ```shell
  3. start-fds.sh
  4. start-hbase.sh
  5. jps
  6. # 进入交互环境
  7. hbase shell
  1. # XMU 建议配置
  2. <property>
  3. <name>hbase.rootdir</name>
  4. <value>hdfs://localhost:9000/hbase</value>
  5. </property>
  6. <property>
  7. <name>hbase.cluster.distributed</name>
  8. <value>true</value>
  9. </property>
  10. <property>
  11. <name>hbase.unsafe.stream.capability.enforce</name>
  12. <value>false</value>
  13. </property>

**

常见异常

hbase shell 无法正常使用

Problem
启动hbase shell 后,HMaster自动掉了,log日志显示java连接错误,根本原因在于hbase自带的zookeeper问题(细节问题还未找到)

Solution**
独立下载zookeeper,默认配置直接运行zkServerjps显示QuorumPeerMain

For macOS

  1. brew install zookeeper
  2. brew services start zookeeper
  3. brew services list

**

stop-hbase.sh 一直等待

(关闭顺序有问题/配置文件修改)

  1. # 关闭主机守护进程
  2. hbase-daemon.sh stop master
  3. # 关闭hbase集群
  4. stop-hbase.sh
  5. # jps查看有未成功关闭的hbase进程
  6. kill -9 PID

PleaseHoldException: Master is initializing

https://blog.csdn.net/weixin_46254308/article/details/106384087#stophbasesh_111