有勇气的牛排博客

hadoop 全分布式部署

有勇气的牛排 447 大数据 2022-12-04 17:18:40

1 环境配置

1.1 系统变量

vim /etc/profile
# hadoop environment export HADOOP_HOME=/usr/local/hadoop-2.8.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

1.2 hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
26 export JAVA_HOME=$JAVA_HOME 34 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/
source $HADOOP_HOME/etc/hadoop/hadoop-env.sh

2 主节点配置 core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration> <!--配置hdfs默认的命名--> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!--配置操作hdfs缓冲区大小--> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> <!--配置临时目录--> <property> <name>hadoop.tmp.dir</name> <value>/home/bigdata/tmp</value> </property> </configuration>

3 hdfs配置 hdfs-site.xml

需要注意 : 将主机域名替换为自己的域名

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration> <!--配置副本因子--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--配置块大小--> <property> <name>dfs.block.size</name> <value>134217728</value> </property> <!--配置元数据的存储位置--> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/hadoopdata/dfs/name</value> </property> <!--配置datanode数据存放位置--> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoopdata/dfs/data</value> </property> <!--配置dfs检测目录存放位置--> <property> <name>fs.checkpoint.dir</name> <value>/home/hadoopdata/checkpoint/dfs/charlesname</value> </property> <!--配置hdfs的namenode的web ui地址--> <property> <name>dfs.http.address</name> <value>master:50070</value> </property> <!--配置dfs的SNN的web ui地址--> <property> <name>dfs.secondary.http.address</name> <value>master:50090</value> </property> <!--是否开启web操作dfs--> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <!--是否启用hdfs的权限--> <property> <name>dfs.permissions</name> <value>true</value> </property> </configuration>

4 mapreduce配置 mapred-site.xml

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration> <!-- 指定mr运行在yarn商 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <final>true</final> </property> <!--历史服务的通信地址--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <!--历史服务的web ui通信地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>

5 yarn配置 yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration> <!-- reducer获取数据的方式---指定mapreduce的shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定yarn的ResourceManager的地址---指定resourcemanager所在的主机名 --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- 日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留时间 设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <!--指定resourcemanager内部通信地址--> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <!--指定scheduler的内部通信地址--> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <!--指定rm的resource-tracker的内部通信地址--> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <!--指定rm的admin的内部通信地址--> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <!--指定rm的web ui地址--> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>

6 配置节点域名

vim /usr/local/hadoop-2.8.4/etc/hadoop/slaves
master slave1 slave2

7 完成分发任务

vim /etc/hosts
192.168.56.20 master 192.168.56.21 slave1 192.168.56.22 slave2

在两个slave里删除Hadoop目录

slave1: rm -rf /usr/local/hadoop-2.8.4/ slave2: rm -rf /usr/local/hadoop-2.8.4/

完成分发工作:

master: scp -r /usr/local/hadoop-2.8.4/ root@slave1:/usr/local/ scp -r /usr/local/hadoop-2.8.4/ root@slave2:/usr/local/

方法2

在master机上执行下列命令,将配置好的hadoop拷贝至slaveX、client。

cat ~/data/2/machines

image.png

for x in `cat ~/data/2/machines` ; do echo $x ; scp -r /usr/cstor/hadoop/etc $x:/usr/cstor/hadoop ;

8 启动

启动之前要先在namenode服务器上格式化,只需一次(多次需要删除某个文件)

hadoop namenode –format

8.1.1 全启动(推荐)

start-all.sh
# 关闭 stop-all.sh

8.1.2 模式启动

start-dfs.sh start-yarn.sh

8.1.3 单个进程启动

hadoop-daemon.sh start namenode hadoop-daemons.sh start datanode yarn-daemon.sh start namenode yarn-daemons.sh start datanode mr-jobhistory-daemon.sh start historyserver

9 测试

9.1 查看进程是否启动了:

jps

9.2 查看对应模块的web

http://192.168.56.20:50070

image.png

http://192.168.56.20:8088

image.png

9.3 文件操作

文件列表

hdfs dfs -ls /

创建 xx文件

hdfs dfs -mkdir xx

上传文件

hdfs dfs –put ./***  /

删除文件夹

删除文件,-rm -R 递归删除目录和文件

hadoop fs -rm   删除文件,-rm -R 递归删除目录和文件

10 跑一个程序

yarn jar /usr/local/hadoop-2.8.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount  /input/word.txt /output/01
hdfs dfs –ls /output/01
hdfs dfs –cat /output/01/part-r-00000

11 常见错误处理

WARN ipc.Client

错误:

WARN ipc.Client: Failed to connect to server: 6059master/192.168.56.20:9000: try once and fail.

50070 端口进程 和 9000端口进程没有启动

11.1 查看 hdfs-site.xml

<!--配置hdfs的namenode的web ui地址--> <property> <name>dfs.http.address</name> <value>6059master:50070</value> </property>

11.2 关闭防火墙

# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld.service 
# 禁用防火墙
systemctl disable firewalld.service

还有个防火墙是selinux: 要设置为 vim /etc/selinux/config

SELINUX=disabled

11.3 namenode节点没有启动

cd /usr/local/hadoop-2.8.4/bin/
hdfs namenode -format

留言

专栏
文章
加入群聊