Ubuntu18.04配置伪分布式Hadoop及HBase

参考教程:

【1】Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)

【2】hadoop搭建四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍

【3】超详细的Hadoop3.1.2架构单机、伪分布式、完全分布式安装和配置

大部分内容摘自参考教程1,更新了过时的部分。结合教程2加了yarn配置文件。结合教程3加了3版本。

目录里面加*的部分为yarn相关,可以选择不配置,相关参数并不是很完整,后面运行的部分也和安装配置无关。

如果像本文一样是走虚拟机,强烈建议先开【虚拟机粘贴板】!!!可自行搜索,作者本人博客也有相关教程。

终端启动命令【ctrl+alt+t】,终端复制粘贴快捷键【ctrl+shift+c/v】。
1 准备阶段
1.1 创建hadoop用户(也可以不要直接用当前用户)

$ sudo useradd -m hadoop -s /bin/bash  #创建hadoop用户,并使用/bin/bash作为shell
$ sudo passwd hadoop                   #为hadoop用户设置密码(自己定),之后需要连续输入两次密码
$ sudo adduser hadoop sudo             #为hadoop用户增加管理员权限
$ su - hadoop                          #切换当前用户为用户hadoop
$ sudo apt-get update                  #更新hadoop用户的apt,方便后面的

1.2 安装SSH,设置SSH无密码登陆

$ sudo apt-get install openssh-server   #安装SSH server
$ ssh localhost                         #登陆SSH,第一次登陆输入yes
$ exit                                  #退出登录的ssh localhost
$ cd ~/.ssh/                            #如果没法进入该目录,执行一次ssh localhost
$ ssh-keygen -t rsa  				   #输入以后,需要连续敲击三次回车

看到 密钥框框 之后,再输入:

$ cat ./id_rsa.pub >> ./authorized_keys #加入授权
$ ssh localhost                         #此时已不需密码即可登录localhost.

1.3 安装jdk,配置环境变量

$ sudo apt-get install openjdk-8-jdk	#安装jdk1.8
$ sudo apt-get install vim				#为了后面代码高亮,安装一下vim(也可不装都用vi)
$ vim ~/.bashrc 						#修改环境变量
vim操作说明:( i ->(ctrl+shift+v)-> ESC -> :wq )

进来先敲字母 i 进入insert模式,

粘贴(ctrl+shift+v)完代码之后,

ESC 退出编辑模式,

输入“ :wq ”保存文件并退出

在文件末尾直接添加如下指令:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

在文件修改完毕以后,检查版本号

$ source ~/.bashrc                       #使新配置的环境变量生效
$ java -version                          #检测是否安装成功,查看版本

如果出现版本号,就完成jdk安装
2 安装hadoop
2.1 下载

随意找一个Hadoop镜像站,下载文件大小最大的,不带src的那个包。

一般命名是这种:hadoop-2.10.0.tar.gz

这里用的2.10.0版本(版本尽量选2系列的,3系列改变了网页端口号,需要自己改一下,都可)
2.2 安装

$ cd /home/本机的root用户名/Downloads						#进入下载文件的目录
$ sudo tar -zxvf  hadoop-2.10.0.tar.gz -C /usr/local	#解压到/usr/local目录下
$ cd /usr/local											#去解压好的目录下
$ sudo mv hadoop-2.10.0 hadoop   	                   	#重命名为hadoop
$ sudo chown -R hadoop ./hadoop                        	#修改文件权限

2.3 配置环境变量

进入刚刚那个.bashrc文件

$ vim ~/.bashrc 						#修改环境变量

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

添加如下代码

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

在文件修改完毕以后,检查版本号

$ source ~/.bashrc						#使新配置的环境变量生效
$ hadoop version						#检测是否安装成功,查看版本

如果出现版本号,就完成Hadoop安装👏
3 配置伪分布式
3.1 修改hadoop配置 hadoop-env.sh(JAVA_HOME)

进入配置文件,vim编辑

$ cd ~
$ cd /usr/local/hadoop/etc/hadoop	#进入hadoop配置路径
$ vim hadoop-env.sh	

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

大概在第25行左右,找到 JAVA_HOME,添加刚刚写过的jdk路径

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

*运行出现警告 再加配置

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

参考资料:[已解决]hadoop报错: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor

$ cd ~
$ cd /usr/local/hadoop/etc/hadoop
$ vim hadoop-env.sh

在hadoop下/etc/hadoop/hadoop-env.sh文件下第55行后面添加下方配置:

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

core-site.xml(文件存储位置、查看node网址)

进入文件

$ vim core-site.xml	

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

在原来的configuration里面加property,改为如下:

<configuration>
    	<!--指定使用hadoop时产生文件的存放目录-->
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
    	<!--指定namenode的地址-->
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
        </property>
</configuration>

hdfs-site.xml(node存储位置、数据副本数)

进入文件

$ vim hdfs-site.xml

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

在原来的configuration里面加property,改为如下:

<configuration>
    	<!--指定hdfs保存数据的副本数量-->
        <property>
             <name>dfs.replication</name>
             <value>1</value>
        </property>
    	<!--指定hdfs中namenode的存储位置-->
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
    	<!--指定hdfs中datanode的存储位置-->
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

*yarn-env.sh(JAVA_HOME)

进入文件

$ vim hadoop-env.sh	

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

大概在第26行左右,找到 JAVA_HOME,添加刚刚写过的jdk路径

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

*mapred-site.xml(添加yarn)

进入文件

$ vim mapred-site.xml.template 

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

在原来的configuration里面加property,改为如下:

<configuration>
		<!--告诉hadoop以后MapReduce运行在YARN上-->
        <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
       </property>
</configuration>

*yarn-site.xml(manager、地址、日志)

进入文件

$ vim yarn-site.xml

一样的编辑步骤( i ->(ctrl+shift+v)-> ESC -> :wq )

在原来的configuration里面加property,改为如下:

<configuration>
    	<!--nodeManager获取数据的方式是shuffle-->
    	<property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
		<!--指定Yarn的老大(ResourceManager)的地址-->     
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property> 
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <!--Yarn打印工作日志-->    
        <property>    
            <name>yarn.log-aggregation-enable</name> 
            <value>true</value>    
        </property>
<configuration>

3.2 NameNode 格式化

$ cd … #这个文件在/usr/local/hadoop里面,要进文件夹
$ cd … #如果中途没有移动的话,改完配置之后,向上两级目录就可以

$ ./bin/hdfs namenode -format	#namenode格式化

3.3 启动与关闭进程
启动进程

$ start-dfs.sh			#启动hdfs进程
$ start-yarn.sh			#启动yarn,如果没配置就跳过这个

看到进程:“NameNode”、”DataNode” 、 “SecondaryNameNode” 等等
查看运行情况,完成安装配置

$ jps					#查看进程

访问http://localhost:50070/,可以查看hdfs

这里如果是Hadoop3版本,则修改端口号为:http://localhost:9870/

Hadoop伪分布式安装完成!👏
关闭进程

$ stop-dfs.sh			#关闭hdfs进程
$ stop-yarn.sh			#关闭yarn,如果没配置就跳过这个
1
2

**4 运行示例wordcount
新建输入

随意,选一个目录,里面放一些文本文件就可。

这里选的路径是/home/hadoop/input

$ cd ~								#回到根目录
$ mkdir input						#创建文件目录
$ cd input							#进入这个目录
$ echo 'Hello world' > file1.txt	#替代文件内容,如果用 >> 就是添加内容
$ cat file1.txt						#打印文件内容

上传hdfs

$ start-dfs.sh								#启动hdfs进程
$ cd ~										#回到根目录
$ hadoop fs -mkdir /input					#在hdfs上创建目录
$ hadoop fs -copyFromLocal input/* /input/	#上传
$ hadoop fs -ls -R /						#查看hdfs文件目录
hdfs命令

查看所有文件:hadoop fs -ls -R /

新建文件夹:hadoop fs -mkdir /test-in

上传文件:hadoop fs -copyFromLocal /test/file1.txt /test-in/

删除文件:hadoop fs -rm -r -skipTrash /file2.txt

查看文件内容:hadoop fs -cat /test-in/files.txt

打开http://localhost:50070/

点击Utilities-Browse the file system,可以看到文件夹
hadoop 运行

运行hadoop安装包中自带的workcount程序

$ start-dfs.sh								#启动hdfs进程
$ cd /usr/local/hadoop/share/hadoop/mapreduce
$ hadoop jar hadoop-mapreduce-examples-2.10.0.jar wordcount /input/* /output/
#这一行命令Hadoop版本不同的话,可以在输入到example的时候直接敲tab,就自动补全了

*yarn 运行

运行hadoop安装包中自带的workcount程序

$ start-yarn.sh								#启动yarn进程
$ cd /usr/local/hadoop/share/hadoop/mapreduce
$ hadoop fs -rm -r -skipTrash /output/
$ yarn jar hadoop-mapreduce-examples-2.10.0.jar wordcount /input/* /output/
#这一行命令Hadoop版本不同的话,可以在输入到example的时候直接敲tab,就自动补全了

打开http://master:8088/cluster
查看结果

$ hadoop fs -ls -R /					#查看hdfs文件目录
$ hadoop fs -cat /output/part-r-00000	#查看输出的开头

关闭进程

$ stop-dfs.sh			#关闭hdfs进程
$ stop-yarn.sh			#关闭yarn进程

以上是我参考别人的实在太多不想写,附上转载连接:https://blog.csdn.net/weixin_43977129/article/details/106317268

下面是HBase的配置:
先挂链接:http://dblab.xmu.edu.cn/blog/2442-2/#more-2442

1.同样解压HBase的压缩包

tar -zvxf /Documents/hbase-1.3.4-bin.tar.gz

2.配置环境变量

vi ~/.bashrc

加入

export PATH=$PATH:/usr/local/hbase/bin

如果已经引入过PATH请在export PATH这行追加/usr/local/hbase/bin,这里的“:”是分隔符。如下图:

在这里插入图片描述环境生效

source ~/.bashrc

检查是否成功:

/usr/local/hbase/bin/hbase version

1.配置/usr/local/hbase/conf/hbase-env.sh。命令如下:

vim /usr/local/hbase/conf/hbase-env.sh

Shell 命令

配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机HBase安装目录下的conf目录(即/usr/local/hbase/conf)

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export HBASE_CLASSPATH=/usr/local/hbase/conf 
export HBASE_MANAGES_ZK=true

Shell

2.配置/usr/local/hbase/conf/hbase-site.xml
用命令vi打开并编辑hbase-site.xml,命令如下:

vim /usr/local/hbase/conf/hbase-site.xml

Shell 命令

修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口。

  <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>

XML

hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.
另外,上面配置文件中,hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设置hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误,启动后查看系统启动日志(/usr/local/hbase/logs/hbase-hadoop-master-ubuntu.log),会发现如下错误:

2020-01-25 15:04:56,916 ERROR [master/localhost:16000:becomeActiveMaster] master.HMaster: Failed to become active master
java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of ‘hbase.procedure.store.wal.use.hsync’ to set the desired level of robustness and ensure the config value of ‘hbase.wal.dir’ points to a FileSystem mount that can provide it.

  1. 接下来测试运行HBase。
    第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤。命令如下:
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

Shell 命令

输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功,截图如下:
hadoop jps

第二步:切换目录至/usr/local/hbase;再启动HBase.命令如下:

cd /usr/local/hbase
bin/start-hbase.sh

Shell 命令

启动成功,输入命令jps,看到以下界面说明hbase启动成功
hbase jps
进入shell界面:

bin/hbase shell

Shell 命令

截图如下:
在这里插入图片描述

4.停止HBase运行,命令如下:

bin/stop-hbase.sh

好了完成!扩大传播面积。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值