参考教程:
【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.
- 接下来测试运行HBase。
第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤。命令如下:
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh
Shell 命令
输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功,截图如下:
第二步:切换目录至/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
好了完成!扩大传播面积。