使用虚拟机搭建个hadoop伪分布环境,用于模拟一个小规模的集群用于学习。
在虚拟机里安装一台centos7系统
ip | 主机名 |
---|---|
192.168.158.30 | hadoop.master |
1.安装java环境我安装的是JDK 1.8
安装方法:https://blog.csdn.net/ltgsoldier1/article/details/97780445
我把jdk安装到如下目录:
/usr/java/jdk1.8.0_221
配置java环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
2.修改主机名 因为是伪分布式 所以也可以不设置
hostnamectl set-hostname hadoop.master # 使用这个命令会立即生效且重启也生效
hostname #查看是否修改完成
3.修改/etc/hosts改成如下内容
192.168.158.30 hadoop.master
192.168.158.30 localhost #添加此项是为了8088端口其他主机可以访问 默认只能本地访问
4.关闭防火墙
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #开机禁用防火墙
5.设置ssh无密码登陆
虽然是伪分布 但是hadoop还是需要使用ssh来启动守护进程跟分布式一样
yum -y install openssh-clients #安装ssh
ssh-keygen -t rsa #一直按回车 生成秘钥
ssh-copy-id hadoop.master #发送到cdh.slave1节点
ssh localhost #测试能否登录
6.下载hadoop
下载地址:https://hadoop.apache.org/releases.html
我下载的是2.9.2版 点击binary进入下载页
这两个地址 下载那个都可以
#下载
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
7.解压安装
mkdir /usr/hadoop #创建安装目录
tar -zxvf hadoop-2.9.2.tar.gz -C /usr/hadoop #解压到安装目录
8.把hadoop添加到环境变量
vi /etc/profile.d/hadoop.sh #添加编辑文件
#如下内容添加到hadoop.sh
export HADOOP_HOME=/usr/hadoop/hadoop-2.9.2
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$HADOOP_HOME/sbin:$PATH
#使修改的环境变量生效
source /etc/profile
#测试hadoop是否工作
hadoop version
9.配置hadoop
伪分布式的配置 需要配置四个文件
/usr/hadoop/hadoop-2.9.2/etc/hadoop #配置文件位置
core-site.xml
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
注意:如果想要在本地使用ide链接hadoop测试需要如下配置 hdfs://localhost/ 只能在服务器上执行java访问hdfs 远程链接不上
<configuration>
<property>
<name>fs.defaultFS</name>
<!-- <value>hdfs://localhost/</value> 伪分布 只能本机访问-->
<value>hdfs://hadoop.master:8020/</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml 需要先修改文件名
mv mapred-site.xml.template mapred-site.xml
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--开启日志聚合服务 可以在任务完成 查看任务日志 还可以查看map里的标准输出 和标准错误-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>True</value>
</property>
</configuration>
10.格式化HDFS文件系统
首次运行hadoop 需要先格式化HDFS文件系统
hdfs namenode -format
11.启动和停止服务
/usr/hadoop/hadoop-2.9.2/sbin/start-all.sh #启动服务
/usr/hadoop/hadoop-2.9.2/sbin/mr-jobhistory-daemon.sh start historyserver #启动历史服务器
/usr/hadoop/hadoop-2.9.2/sbin/stop-all.sh #停止服务
/usr/hadoop/hadoop-2.9.2/sbin/mr-jobhistory-daemon.sh stop historyserver #停止历史服务器
#查看启动的服务
jps
#所有启动的服务
NameNode
DataNode
ResourceManager
SecondaryNameNode
JobHistoryServer
NodeManager
12.创建用户目录
hadoop fs -mkdir -p /user/$user
13.日志跟访问地址
/usr/hadoop/hadoop-2.9.2/logs #日志
namenode地址:http://192.168.158.30:50070
资源管理器地址:http://192.168.158.30:8088
历史服务器地址:http://192.168.158.30:19888/jobhistory
最后附上hadoop服务与对应的端口
组件 | 节点 | 默认端口 | 配置 | 用途说明 |
HDFS | DateNode | 50010 | dfs.datanode.address | datanode服务端口,用于数据传输 |
HDFS | DateNode | 50075 | dfs.datanode.http.address | http服务的端口 |
HDFS | DateNode | 50475 | dfs.datanode.https.address | http服务的端口 |
HDFS | DateNode | 50020 | dfs.datanode.ipc.address | ipc服务的端口 |
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服务的端口 |
HDFS | NameNode | 50470 | dfs.namenode.https-address | https服务的端口 |
HDFS | NameNode | 8020 | fs.defaultFS | 接收Client连接的RPC端口,用于获取文件系统metadata信息。 |
HDFS | journalnode | 8485 | dfs.journalnode.rpc-address | RPC服务 |
HDFS | journalnode | 8480 | dfs.journalnode.http-address | HTTP服务 |
HDFS | ZKFC | 8019 | dfs.ha.zkfc.port | ZooKeeper FailoverController,用于NN HA |
YARN | ResourceManage | 8032 | yarn.resourcemanager.address | RM的applications manager(ASM)端口 |
YARN | ResourceManage | 8030 | yarn.resourcemanager.scheduler.address | scheduler组件的IPC端口 |
YARN | ResourceManage | 8031 | yarn.resourcemanager.resource-tracker.address | IPC |
YARN | ResourceManage | 8033 | yarn.resourcemanager.admin.address | IPC |
YARN | ResourceManage | 8088 | yarn.resourcemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8040 | yarn.nodemanager.localizer.address | localizer IPC |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container manager的端口 |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服务端口 |
HBase | Master | 60000 | hbase.master.port | IPC |
HBase | Master | 60010 | hbase.master.info.port | http服务端口 |
HBase | RegionServer | 60020 | hbase.regionserver.port | IPC |
HBase | RegionServer | 60030 | hbase.regionserver.info.port | http服务端口 |
HBase | HQuorumPeer | 2181 | hbase.zookeeper.property.clientPort | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 2888 | hbase.zookeeper.peerport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 3888 | hbase.zookeeper.leaderport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
Hive | Metastore | 9085 | /etc/default/hive-metastore中export PORT=<port>来更新默认端口 | |
Hive | HiveServer | 10000 | /etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=<port>来更新默认端口 | |
ZooKeeper | Server | 2181 | /etc/zookeeper/conf/zoo.cfg中clientPort=<port> | 对客户端提供服务的端口 |
ZooKeeper | Server | 2888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | follower用来连接到leader,只在leader上监听该端口 |
ZooKeeper | Server | 3888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | 用于leader选举的。只在electionAlg是1,2或3(默认)时需要 |