Hadoop完全分布式部署
目录
集群规划
准备3台服务器,具体规划如下:
一、非高可用模式
| 服务器node1 | 服务器node2 | 服务器node3 | |
|---|---|---|---|
| HDFS | NameNode DataNode | DataNode | DataNode SecondaryNameNode |
| Yarn | NodeManager | Resourcemanager NodeManager | NodeManager |
二、高可用模式
| 服务器node1 | 服务器node2 | 服务器node3 | |
|---|---|---|---|
| HDFS | NameNode DataNode | NameNode DataNode | DataNode |
| Yarn | NodeManager | Resourcemanager NodeManager | Resourcemanager NodeManager |
官网
非高可用模式部署
-
去官网下载对应版本,然后上传解压(我用的是3.1.3的版本)
-
配置环境变量:
vi /etc/profile.d/my_env.shshell#hadoop export HADOOP_HOME=/opt/install/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin -
配置etc/hadoop/core-site.xml文件
xml<!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/install/hadoop-3.1.3/data</value> </property> <!-- 配置HDFS网页登录使用的静态用户为jack --> <property> <name>hadoop.http.staticuser.user</name> <value>jack</value> </property> <!-- 以下配置主要是用hive操作hdfs的时候,当使用beeline客户端就会设计到用户的一个问题,要使用代理操作才能正常使用 --> <!-- 配置该jack允许通过代理访问的主机节点 --> <property> <name>hadoop.proxyuser.jack.hosts</name> <value>*</value> </property> <!-- 配置该jack允许通过代理用户所属组 --> <property> <name>hadoop.proxyuser.jack.groups</name> <value>*</value> </property> <!-- 配置该jack允许通过代理的用户--> <property> <name>hadoop.proxyuser.jack.users</name> <value>*</value> </property> -
配置etc/hadoop/hdfs-site.xml文件
xml<!-- nn web端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop102:9870</value> </property> <!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property> <!-- 测试环境指定HDFS副本的数量 --> <property> <name>dfs.replication</name> <value>3</value> </property> -
配置etc/hadoop/yarn-site.xml文件
xml<!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!-- yarn容器允许分配的最大最小内存 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <!-- yarn容器允许管理的物理内存大小 --> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> <!-- 关闭yarn对物理内存和虚拟内存的限制检查 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property> <!-- 设置日志保留时间为7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> -
配置etc/hadoop/mapred-site.xml文件
xml<!-- 指定MapReduce程序运行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop102:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop102:19888</value> </property> -
修改hadoop-env.sh配置文件
shell# pids路径:如果不修改,会存储在hadoop默认的临时存储路径tmp里面,这个目录过段时间hadoop会自动删除,如果pids被删除了,hadoop启动和停止会报错 export HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids # namenode/datanode-memory:增大namenode内存是因为默认的内存很少 export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx4096m" export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx8192m" -
修改yarn-env.sh配置文件
shell# 新版本要求yarn的pid export HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids -
修改mapred-env.sh配置文件
shellexport HADOOP_PID_DIR=/opt/install/hadoop-3.1.3/pids -
配置workers
shell# 删除之前的localhost hadoop102 hadoop103 hadoop104 -
将hadoop3.1.3分发到hadoop103和hadoop104
shellscp -r /opt/install/hadoop-3.1.3 hadoop103:/opt/install/ scp -r /opt/install/hadoop-3.1.3 hadoop104:/opt/install/ -
分发环境变量,记得source一下
-
第一次启动需要格式化namenode:
hdfs namenode -format -
启动hdfs:
start-dfs.sh -
启动yarn:
start-yarn.sh -
开启历史服务器:
mapred --daemon start historyserver -
web访问hdfs:
hadoop102:9870 -
web访问yarn:
hadoop102:8088 -
web访问历史服务:
hadoop102:19888