物联网架构之Hadoop

一:系统环境设置(所有节点都设置)

1:关闭selinux和防火墙

setenforce 0

sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

systemctl stop firewalld

systemctl disable firewalld

2:为各个节点设置主机名

hostnamectl set-hostname node1

bash

hostnamectl set-hostname node2

bash

hostnamectl set-hostname node3

bash

3:修改每台主机的hosts文件

cat <<EOF>>/etc/hosts

192.168.10.101 node1

192.168.10.102 node2

192.168.10.103 node3

EOF

4:创建hdoop用户组和hduser用户

[root@node1 ~]# groupadd hadoop

[root@node1 ~]# useradd -g hadoop hduser

[root@node1 ~]# passwd hduser

此处设置密码

5:为hduser用户授权

[root@node1 ~]# visudo

在末尾添加:

hduser ALL=(ALL) ALL

6:安装JDK

[root@node1 ~]# rpm -ivh jdk-8u171-linux-x64.rpm

[root@node1 ~]# vim /etc/profile

在末尾添加:

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

export CLASSPATH=JAVA_HOME/lib:CLASSPATH

export PATH=JAVA_HOME/bin:PATH

[root@node1 ~]# source /etc/profile

7:配置免密码登录(在node1上配置)

[root@node1 ~]# su - hduser

[hduser@node1 ~]$ ssh-keygen -t rsa //一路回车键即可

[hduser@node1 ~]$ ssh-copy-id hduser@node1

[hduser@node1 ~]$ ssh-copy-id hduser@node2

[hduser@node1 ~]$ ssh-copy-id hduser@node3

二:安装Hadoop

1:将hadoop包拷贝到hduser的家目录并解压

在node1上操作

[hduser@node1 ~]$ tar zxvf hadoop-2.6.5.tar.gz

[hduser@node1 ~]$ mv hadoop-2.6.5 hadoop

2:配置hadoop的环境变量

[hduser@node1 ~]$ sudo vim /etc/profile

在末尾添加:

export HADOOP_HOME=/home/hduser/hadoop

export PATH=HADOOP_HOME/bin:PATH

[hduser@node1 ~]$ source /etc/profile

3:配置hadoop-env.sh 文件

[hduser@node1 ~]$ cd ~/hadoop/etc/hadoop/

[hduser@node1 hadoop]$ vim hadoop-env.sh

在末尾添加:

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

4:修改yarn-env.sh文件

[hduser@node1 hadoop]$ vim yarn-env.sh

在末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

5:修改slaves文件

[hduser@node1 hadoop]$ vim slaves

清空文件中原有的内容

node2

node3

6:编辑core-site.xml文件

[hduser@node1 hadoop]$ vim core-site.xml

在末尾找到<configuration>模块

在里面添加配置:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://node1:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>file:/home/hduser/hadoop/tmp</value>

</property>

</configuration>

备注:定义hdfs的uri,以及hdfs的临时目录

7:编辑hdfs-site.xml文件

[hduser@node1 hadoop]$ vim hdfs-site.xml

在末尾找到<configuration>模块

在里面添加:

<configuration>

<property><name>dfs.namenode.secondary.http-address</name><value>node1:50090</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/hduser/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/hduser/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

备注:

名称节点和数据节点的存放位置,文件副本数和读取权限。

8:修改mapred-site.xml文件

[hduser@node1 hadoop]$ cp mapred-site.xml.template mapred-site.xml

[hduser@node1 hadoop]$ vim mapred-site.xml

在末尾找到<configuration>模块,在里面添加:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>node1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>node1:19888</value>

</property>

</configuration>

备注:Mapreduce作业记录的web地址和端口。

9:修改yarn-site.xml文件

[hduser@node1 hadoop]$ vim yarn-site.xml

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>node1:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>node1:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>node1:8035</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>node1:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>node1:8088</value>

</property>

</configuration>

备注:

resourcemanager、nodemanager的通信端口,web端口等信息

10:将hadoop目录拷贝到其他节点上

[root@node1 ~]#scp -r /home/hduser/hadoop node2:/home/hduser

[root@node1 ~]#scp -r /home/hduser/hadoop node3:/home/hduser

三:验证安装配置

1:在 Master 主机(node1)上格式化 NameNode

[hduser@node1 ~]$ cd hadoop/

[hduser@node1 hadoop]$ bin/hdfs namenode -format

[hduser@node1 hadoop]$ sbin/start-dfs.sh

2:查看进程

[hduser@node1 hadoop]$ jps

16721 Jps

15687 NameNode

15866 SecondaryNameNode

3:启动yarn

[hduser@node1 hadoop]$ sbin/start-yarn.sh

4:查看集群环境

[hduser@node1 hadoop]$ bin/hdfs dfsadmin -report

5:浏览器查看 HDFS 运行状态:

http://192.168.10.101:50070

四:运行 Hadoop WordCount 程序

WordCount 实现了对文本中的单词计数的功能,并要求输出结果并按单词首字母排序

1:创建测试文件的目录

[hduser@node1 ~]$ mkdir ~/file

2:编辑测试文件

[hduser@node1 ~]$ cd ~/file/

[hduser@node1 file]$ echo "ni hao hadoop">file1.txt

[hduser@node1 file]$ echo "hello hadoop hi china">file2.txt

3:启动hadoop并 创建hdfs目录

[hduser@node1 file]$ cd ~/hadoop/

[hduser@node1 hadoop]$ sbin/start-all.sh

[hduser@node1 hadoop]$ bin/hadoop fs -mkdir /input2

4:将file1和file2拷贝到hdfs存储目录中

[hduser@node1 hadoop]$ bin/hadoop fs -put ~/file/file* /input2/

[hduser@node1 hadoop]$ bin/hadoop fs -ls /input2/

5:执行WordCount程序,对文件进行统计

[hduser@node1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input2/ /output2/wordcount1

注意:输出目录不能已存在,否则不会输出

6:查看执行结果

[hduser@node1 hadoop]$ bin/hadoop fs -cat /output2/wordcount1/*

如果看到输出结果证明hadoop安装成功

相关推荐
58沈剑12 小时前
80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...
架构
想进大厂的小王14 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
阿伟*rui16 小时前
认识微服务,微服务的拆分,服务治理(nacos注册中心,远程调用)
微服务·架构·firefox
ZHOU西口16 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
苍老流年17 小时前
Hive中各种Join的实现
数据仓库·hive·hadoop
EDG Zmjjkk18 小时前
Hive 查询(详细实操版)
数据仓库·hive·hadoop
deephub18 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
Hsu_kk19 小时前
Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
数据仓库·hive·hadoop
大数据编程之光19 小时前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop
杰克逊的日记19 小时前
Hive详解
数据仓库·hive·hadoop