一、准备java环境
安装java环境,本示例使用jdk11版本,openjdk-11.0.2_linux-x64_bin.tar.gz
自行下载,并存放到Linux服务器 /usr/java 目录下
使用 解压命令解压到 java 目录下
[root@test java]# cd /usr/java/
[root@test java]# tar -zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
配置环境变量,在/etc/profile末尾加入java_home
[root@test java]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk-11.0.2
export PATH=${PATH}:${JAVA_HOME}/bin
[root@test java]# source /etc/profile
[root@test java]# java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
[root@test java]#
二、安装Hadoop
1、下载Hadoop安装包
Hadoop版本下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-3.3.4/
2、Hadoop安装
将安装包 hadoop-3.3.4.tar.gz存放到Linux服务器 /usr/hadoop 目录下
使用 解压命令解压到 hadoop 目录下,并配置环境变量,在/etc/profile末尾加入HADOOP_HOME
[root@test hadoop]# cd /usr/hadoop/
[root@test java]# tar -zxvf hadoop-3.3.4.tar.gz
[root@test hadoop]# vi /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-3.3.4
export PATH=${PATH}:${HADOOP_HOME}/bin
[root@test hadoop]# source /etc/profile
[root@longi hadoop]# hadoop version
Hadoop 3.3.4
Source code repository https://github.com/apache/hadoop.git -r a585a73c3e02ac62350c136643a5e7f6095a3dbb
Compiled by stevel on 2022-07-29T12:32Z
Compiled with protoc 3.7.1
From source with checksum fb9dd8918a7b8a5b430d61af858f6ec
This command was run using /usr/hadoop/hadoop-3.3.4/share/hadoop/common/hadoop-common-3.3.4.jar
3、测试
进入hadoop根目录,新建一个文件夹input,随便找一个文本文件进行测试
[root@test hadoop]# cd hadoop-3.3.4
[root@test hadoop-3.3.4]# mkdir input
[root@test hadoop-3.3.4]# ll
总用量 120K
drwxr-xr-x. 2 1024 1024 4.0K 7月 29 2022 bin
drwxr-xr-x. 3 1024 1024 4.0K 7月 29 2022 etc
drwxr-xr-x. 2 1024 1024 4.0K 7月 29 2022 include
drwxr-xr-x. 2 root root 4.0K 2月 1 11:10 input
drwxr-xr-x. 3 1024 1024 4.0K 7月 29 2022 lib
drwxr-xr-x. 4 1024 1024 4.0K 7月 29 2022 libexec
-rw-rw-r--. 1 1024 1024 25K 7月 29 2022 LICENSE-binary
drwxr-xr-x. 2 1024 1024 4.0K 7月 29 2022 licenses-binary
-rw-rw-r--. 1 1024 1024 15K 7月 17 2022 LICENSE.txt
-rw-rw-r--. 1 1024 1024 29K 7月 17 2022 NOTICE-binary
-rw-rw-r--. 1 1024 1024 1.6K 4月 22 2022 NOTICE.txt
-rw-rw-r--. 1 1024 1024 175 4月 22 2022 README.txt
drwxr-xr-x. 3 1024 1024 4.0K 7月 29 2022 sbin
drwxr-xr-x. 4 1024 1024 4.0K 7月 29 2022 share
[root@test hadoop-3.3.4]# cd input/
[root@test input]# ll
总用量 4.0K
-rw-r--r--. 1 root root 846 1月 17 16:33 日常记录.txt
运行一个haoop官方例子,单词次数计算:
[root@test hadoop-3.3.4]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount input output
[root@test hadoop-3.3.4]# cd output/
[root@test output]# ll
总用量 4.0K
-rw-r--r--. 1 root root 1.1K 2月 1 11:14 part-r-00000
-rw-r--r--. 1 root root 0 2月 1 11:14 _SUCCESS
[root@test output]# cat part-r-00000
这样,单机模式就搭建完成了!这里只是为了验证应用的使用关系和逻辑,系统上线应使用集群化部署
四、启动HDFS
1、修改配置文件hadoop-env.sh
文件在/usr/hadoop/hadoop-3.3.4/etc/hadoop 目录下,修改jdk的java_home
export JAVA_HOME=/usr/java/jdk-11.0.2
2、修改配置文件core-site.xml
文件在/usr/hadoop/hadoop-3.3.4/etc/hadoop 目录下
<configuration>
<property>
<!-- HDFS namenode地址 -->
<name>fs.defaultFS</name>
<!-- 集群应使用主机名,需要在/etc/hosts文件中配置映射,9000为hdfs访问端口 -->
<value>hdfs://172.19.249.41:9000</value>
</property>
<property>
<!-- HADOOP 运行时存储路径 -->
<name>hadoop.tmp.dir</name>
<value>/udata/hadoop</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
3、需改配置文件hdfs-site.xml
文件在/usr/hadoop/hadoop-3.3.4/etc/hadoop 目录下
<configuration>
<property>
<!-- 设置hadoop存储文件的副本数,默认3份 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>172.30.43.174:50070</value>
</property>
</configuration>
4、初始化
直接执行命令,不报错即可
hdfs namenode -format
能看到Storage directory /udata/hadoop/dfs/name has been successfully formatted代表初始化成功
5、启动
[root@test sbin]# cd hadoop-3.3.4/sbin/
[root@test sbin]# ./start-all.sh
报错 ERROR: Attempting to operate on hdfs namenode as root,则需要修改配置
[root@test sbin]# vi /etc/profile
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
[root@test sbin]# ./start-all.sh
告警 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
没有配置好ssh 免密登录,重新设置ssh 免密登录
修改/etc/ssh/ssh_config文件,配置参数如下
PubkeyAuthentication yes
PasswordAuthentication yes
密钥的生成文件命名为 id_rsa
[root@test ~]# cd .ssh/
[root@test .ssh]# ll
总用量 28
-rw-------. 1 root root 1782 2月 1 17:00 authorized_keys
-rw-------. 1 root root 2602 2月 1 16:59 id_rsa
-rw-r--r--. 1 root root 570 2月 1 16:59 id_rsa.pub
-rw-------. 1 root root 928 2月 1 16:04 known_hosts
-rw-r--r--. 1 root root 87 2月 1 15:18 known_hosts.old
[root@test .ssh]#
[root@test sbin]# ssh-keygen -t rsa
####这里的test为主机名
[root@test sbin]# ssh-copy-id test
再执行启动脚本
[root@testsbin]# ./start-all.sh
6、验证
[root@test sbin]# jps
28450 ResourceManager
29171 Jps
28676 NodeManager
28118 SecondaryNameNode
27738 DataNode
18652 NameNode
[root@test sbin]#
四、问题
1、hadoop只是大数据生态的基础应用,在业务场景中对于开发人员来说如果存储类似物联网应用下的时序数据该怎么才做呢?数据分析还需要再编写mapreduce应用程序运行执行吗?
2、因为之前使用mongodb进行大数据存储,那么对比mongodb的使用方式,时序数据写入,类似Sql语句的聚合查询都比较方便,对应的在hadoop生态下也有相应的组件来处理相应的业务
3、Hbase:实时数据处理(随机读写);Hive、Spark:数据聚合分析工具,
4、后续再一一对组件进行应用验证和简单部署使用
五、参考资料
1、https://blog.csdn.net/m0_67401746/article/details/123934274
3、https://blog.csdn.net/m0_55868614/article/details/121147275