Hadoop环境搭建
一、配置列表
- linux选用centos7
- jdk1.8(hadoop是java写的,运行需要jre)
- hadoop3
二、目标
- 熟悉hadoop的配置
- 搭建伪分布式hadoop集群
三、下载jdk、hadoop文件
- jdk下载
斜体样式从华为镜像网站下载,速度比较快。
https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz - hadoop下载
从北京信息学院的国内镜像下载
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
自己的百度云链接:
链接:https://pan.baidu.com/s/11sPp1oec6uBi8Ci1BvV0rw
提取码:1234 - centos8 iso文件下载
阿里镜像下载
https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.2.2004-x86_64-dvd1.iso
四、开干
- jdk
1)scp 本机中jdk文件 username@centos的ip:目标路径。解压到 /opt/module目录下(个人习惯)。
2)配置JAVA_HOME、JRE、CLASSPATH环境变量
修改/etc/profile在文件末尾添加:
export JAVA_HOME=/opt/moudle/jdk-14.0.2
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- hadoop
1)配置HADOOP_HOME环境变量
修改/etc/profile末尾添加export HADOOP_HOME=/opt/moudle/hadoop-3.3.0 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
2)修改hadoop的etc目录下的启动配置文件
- core-site.xml
```html
<configuration>
<!-- NameNode 地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<!-- Hadoop临时文件目录,默认是/tmp目录,系统重启后数据丢失 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moudle/hadoop-3.3.0/data/tmp</value>
</property>
</configuration>
- hadoop-en.sh登录时不会去加载/etc/profile中的环境变量
必须将JAVA_HOME写死,ssh
export JAVA_HOME=/opt/moudle/jdk-14.0.2
#root用户启动失败 修改 etc/hadoop/hadoop-env.sh 添加如下
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
- hdfs-site.xml
<configuration>
<!-- block块的副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--本节点namenode数据目录-->
<property>
<name>dfs.name.dir</name>
<value>/opt/moudle/hadoop-3.3.0/data/name</value>
</property>
<!--本结点datanode数据目录-->
<property>
<name>dfs.data.dir</name>
<value>/opt/moudle/hadoop-3.3.0/data/data</value>
</property>
<!--本地datanode地址-->
<property>
<name>dfs.datanode.http.address</name>
<value>node01:9999</value>
</property>
<!-- 开启Web端访问hdfs-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--namenode返回给客户端datanode的主机名称而不是ip(阿里云EC必须这样配)-->
<!--
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
--!>
</configuration>
- 配置namenode、datanode之间ssh登录(不同进程之间登录本机)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
五 测试
- 启动hdfs
start-dfs.sh
- jps查看namenode、datanode 、secondarynode进程是否都已经正常启动,如果为正常启动,查看logs/*.log错误日志。
- 在hdfs中创建一个/user文件夹
hdfs dfs -mkdir /user
在浏览器中输入:http://47.111.250.185:9870/ 查看已上传的文件
######################运行自带的单词出现次数统计程序##################
4. 新建a.txt
101 aaa
1002 bbb
hadoop
hadoop1101 aaa
1002 bbb
hadoop
2.新建b.txt
aa
bb
aa
nb
3.上传文件到fs
hadoop fs -mkdir -p /wordcount/input
hadoop fs -put a.txt /wordcount/input
hadoop fs -put b.txt /wordcount/input
4.调用hadoop提供的实例jar包,进行统计
hadoop jar hadoop-mapreduce-examples-3.0.0.jar wordcount /wordcount/input /output
Tips: **.jar 程序代码
wordcount : 程序的入参,调用哪个示例代码方法
/wordcount/intput 指定输入文件的地址
/output 输出结果存放的文件
5. 测试结果
1002 2
101 1
aa 2
aaa 2
bb 1
bbb 2
hadoop 2
hadoop1101 1
nb 1
六、小结
无非是编写map,reduce函数。可以使用springboot进行开发。