Hadoop集群搭建(装一台,完成后Copy到其余两台)
1. 准备工作
1.确保各服务器已安装并配置了Java环境,我使用的是jdk1.8
2.完成 ssh免密登录配置
3.下载以下文件
2. 安装Hadoop
a. 将hadoop压缩文件上传至自己的hadoop目录
这里在/opt下创建java、hadoop、flink文件夹,所以将hadoop压缩包上传到了/opt/hdaoop目录下
b. 解压缩hadoop压缩包
进入hadoop目录下使用命令 ----- tar -zxvf hadoop-3.3.2.tar.gz
解压完成
c. 配置Hadoop 环境变量
- 可以看到我们的hadoop地址为/opt/hadoop/hadoop-3.3.2
使用命令 ----vim /etc/profile
进入编辑,按“i”减切换insert模式,添加hadoop环境变量
#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.2
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
- 使用命令 ----
source /etc/profile
使配置文件生效 - 如配置成功过,可使用名 ----
hadoop version
查看hadoop版本
3. 配置Hadoop集群环境
hadoop安装目录下/etc/hadoop中以下文件:
-
workers:hadoop3.0以后slaves更名为workers
-
core-site.xml
-
hdfs-site.xml
-
mapred-site.xml
-
yarn-site.xml
1. workers,配置 DataNode各节点的主机名或IP
2. core-site.xml
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址在hadoop01机器上,需要修改为自己的-->
<value>hdfs://vmone:9000</value>
</property>
<!--配置Hadoop的临时目录 ,需要修改为自己的-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-3.3.2/tmp</value>
</property>
</configuration>
3. hdfs-site.xml
<configuration>
<!--namenode web UI监听的地址和端口,需要修改为自己的-->
<property>
<name>dfs.namenode.http-address</name>
<value>vmone:50070</value>
</property>
<!--副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--是否启用HDFS权限,false否,true是-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!--块大小,默认字节128MB-->
<property>
<name>dfs.blocksize</name>
<!--128m-->
<value>134217728</value>
</property>
</configuration>
4. mapred-site.xml
<configuration>
<!--指定MapReduce运行时的框架,这里指定在YARN上,默认在local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--如果map和reduce任务访问本地库(压缩等),则必须保留原始值
当此值为空时,设置执行环境的命令将取决于操作系统,需要修改为自己的-->
<property>
<name>mapreduce.admin.user.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.3.2</value>
</property>
<!--可以设置AM【AppMaster】端的环境变量-,需要修改为自己的->
<property>
<name>yarn.app.mapreduce.an.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.3.2</value>
</property>
</configuration>
5. yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!--集群master-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>vmone</value>
</property>
<!--容器可能会覆盖的环境变量,而不是使用NodeManager的默认值-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ</value>
</property>
<!--关闭内存检测,在虚拟机环境中不做配置会报错-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否在一个节点分配多个containe -->
<property>
<name>yarn.scheduler.fair.assignmultiple</name>
<value>false</value>
</property>
<!-- 代表在一个节点上一次性最多分配几个container -->
<property>
<name>yarn.scheduler.fair.max.assign</name>
<value>2</value>
</property>
</configuration>
4. 其他服务器同步
a. 将vmone主机配置好的hadoop,同步至vmtwo,vmthree
rsync -av /opt/hadoop admin@vmtwo:/opt/
rsync -av /opt/hadoop admin@three:/opt/
b. 配置其他两台服务器环境变量,并使用source命令使其生效
#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.2
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
c. 在Master上格式化 namenode,我这里在vmone上
在vmone服务器上使用命令 ---- hdfs namenode -format
初始化HDFS,出现以下输出,即初始化成功
5. 启动集群
-
使用命令 ----
start-all.sh
启动集群 -
输如命令 ----
jps
查看各组件启动情况
1. vmone启动及JPS查看,其他两不用再手动启动
2. vmtwo、vmthreeJPS查看