这里是实验的来源
综合实验一
综合实验二
我使用的实验环境是:Hadoop2.7.7 + Hive3.1.2 + ZooKeeper3.6.1 + HBase1.4.13 + Sqoop1.4.6
之前一直是按照林子雨老师的博客进行学习的,他里面安装的是hadoop3.1.3,Hbase2.2.2,在本次实验中,hadoop的版本和hbase的版本是不能满足需求的,原因是Sqoop1.4.6的数据互导不能支持hbase2.x,需要更换hbase,换了hbase还需要换与其兼容的hadoop。上面的实验环境是亲测可行的
之前的hadoop和hbase版本可以不用删除。
Hive和Sqoop的安装可以参照林子雨老师的博客:
Hive安装
Sqoop安装
我们选择将 Hadoop 安装至 /usr/local/ 中:
$ sudo tar -zxf ~/下载/hadoop-2.7.7.tar.gz -C /usr/local # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-2.7.7/ ./hadoop2.7 # 将文件夹名改为hadoop
$ sudo chown -R hadoop ./hadoop2.7 # 修改文件权限
伪分布式配置:
$ sudo vi /usr/local/hadoop2.7/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop2.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$ sudo vi /usr/local/hadoop2.7/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop2.7/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop2.7/tmp/dfs/data</value>
</property>
</configuration>
配置完成后,执行 NameNode 的格式化:
$ cd /usr/local/hadoop2.7
./bin/hdfs namenode -format
到这里,完成了配置,一定要进入hadoop2.7这个目录来启动
$ cd /usr/local/hadoop2.7
./sbin/start-dfs.sh
可以进入网页端看看:localhost:50070
版本已经是2.7.7的了,要是以后想用回3.1.3,直接进入3.1.3的目录启动即可
$ cd ~
$ sudo tar -zxf ~/下载/hbase-1.4.13-bin.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv ./hbase-1.4.13 ./hbase1.4
$ sudo chown -R hadoop ./hbase1.4
配置环境变量
$ vim ~/.bashrc
加入
export PATH=$PATH:/usr/local/hbase1.4/bin
退出,再立即生效
$ source ~/.bashrc
伪分布式配置:
$ sudo vi /usr/local/hbase1.4/conf/hbase-env.sh
这里是在hbase-env.sh这个文件里面找到JAVA_HOME、HBASE_CLASSPATH、HBASE_MANAGES_ZK这三个名称,然后把前面的“#”号删除,再改成下面这样,我是因为要使用外部的zookeeper所以把HBASE_MANAGES_ZK改为false,要是用hbase内部的zookeeper,可以改成true。JAVA_HOME是写java的位置,我用的jdk是jdk1.8.0_241,大家可以根据自己的jdk版本来修改这里。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241
export HBASE_CLASSPATH=/usr/local/hbase1.4/conf
export HBASE_MANAGES_ZK=false
$ sudo vi /usr/local/hbase1.4/conf/hbase-site.xml
<configuration>
<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>
</configuration>
配置完成,现在还不能启动,因为我是用了外部zookeeper的,要先启动zookeeper才能再启动hbase
说明:使用外部zookeeper我感觉会使hbase稳定一些,而且hbase出问题了也能使用外部zookeeper解决,如果嫌麻烦也不装,用hbase内部的zookeeper也是可以的。
将解压安装包zookeeper3.6.1至路径 /usr/local
$ cd ~
$ sudo tar -zxf ~/下载/apache-zookeeper-3.6.1-bin.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv ./apache-zookeeper-3.6.1 ./zookeeper
$ sudo chown -R hadoop ./zookeeper
进入zookeeper目录下创建目录tmp
$ cd /usr/local/zookeeper
$ sudo mkdir tmp
$ sudo chown -R hadoop ./tmp
进入conf,将zoo_sample.cfg复制一份,并命名为zoo.cfg,修改zoo.cfg
$ cd conf
$ sudo cp zoo_sample.cfg zoo.cfg
$ sudo vi zoo.cfg
#将原来的dataDir注释掉,改成这样
dataDir=/usr/local/zookeeper/tmp
修改环境变量
$ vim ~/.bashrc
# 添加以下内容
export ZOOKEEPER_HOME=/usr/zookeeper
export PATH=${ZOOKEEPER_HOME}/bin:$PATH
# 保存退出
# 使配置生效
$ source ~/.bashrc
zookeeper安装完成
先启动zookeeper:zkServer.sh start
再启动hbase:
$ cd /usr/local/hbase1.4
$ ./bin/start-hbase.sh
我们也可以进去hbase的网址看看:localhost:16010
可以看到是1.4.13版本了
注意:启动顺序:hadoop->zookeeper->hbase
关闭顺序:hbase->zookeeper->hadoop
$ cd /usr/local/sqoop/conf
$ sudo vi sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/hadoop2.7
export HADOOP_MAPRED_HOME=/usr/local/hadoop2.7
export HBASE_HOME=/usr/local/hbase1.4
最后我再贴上自己的环境变量信息,你们可以酌情修改(可能很不规范,请忽略吧,嘻嘻)
hive>load data local inpath '/usr/local/bigdatacase/dataset/user_table.txt' overwrite into table bigdata_user;
$ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 51716619E084DAB9
(2) 利用vim打开/etc/apt/sources.list文件
$ sudo vim /etc/apt/sources.list
(3)在文件的最后一行添加清华大学的镜像源:(这里我的是Ubuntu18.04,对应的R语言版本是bionic-cran35,不同版本的Ubuntu,安装不同的R语言版本)
deb http://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu/ bionic-cran35/
(5)退出vim,更新软件源列表:
$ sudo apt-get update
(6)安装R语言
$ sudo apt-get install r-base
安装成功后进入R,再安装一些依赖库,包括:RMySQL、ggplot2、devtools和recharts
install.packages(‘RMySQL’)
install.packages(‘ggplot2’)
install.packages(‘devtools’)
devtools::install_github(‘taiyun/recharts’)
安装这几个东西的时候有出现错误,比如这样
这里他说让我们安装libcurl4-openssl-dev,那我们就退出去直接安装
$ sudo apt-get install libcurl4-openssl-dev
其他错误都是用这种方法解决
异常现象为: 启动和关闭hbase进程正常,hbase shell命令进入后,list命令和status命令正常,但是create ‘t1’,'t1’命令(创建表)时抛异常:ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 查看hbase-master-service-slave.log文件有大量以下WARN信息: WARN [master/hadoop72:16000:becomeActiveMaster] master.HMaster: hbase:meta,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1560231893015, server=hadoop75,16020,1560231583387}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
解决方法:
1、时间没同步,date -R查看每个节点机器的时间,看误差是否在30秒内
2、查看hbase-site.xml中参数hbase.rootdir的值,需要放在hdfs上,且主机名和端口号需与hadoop中的core-site.xml中参数fs.defaultFS的值保持一致
3、修改每个主机的主机名映射,即/etc/hosts文件
4、注意hbase和hadoop的版本匹配问题,将hadoop下的hadoop-xxxx.jar替换掉hbase/lib下的hadoop-xxxx.jar————这项无稽之谈,替换后彻底启动不了hbase进程了,其实查看hbase官网的版本匹配表就OK了,无需手动替换jar包
5、将hadoop下的core-site.xml和hdfs-site.xml复制到hbase/conf目录下
6、清空hbase.rootdir,hbase.tmp.dir目录下的文件,删除zookeeper/conf/zoo.cfg中设置的dataDir目录下的version-2文件夹————照办了,但是异常依然存在
7、最后stop-hbase.sh后,zookeeper-3.4.14/bin/zkCli.sh命令进入zookeeper集群客户端,ls /命令查看zk注册信息,rmr /hbase命令删除已经存在的hbase注册信息,再start-hbase.sh重启hbase进程,问题解决。
解决方法转载至这里https://blog.csdn.net/dream_bin/article/details/88343000
至此所有遇到的坑都罗列出来了
如有错误,请在评论指出,还有任何问题也可以在评论区发出来,大家一起学习进步,共同进步