Linux安装Hadoop及其环境配置
Hadoop目录
目录描述bin对 Hadoop 进行操作的相关命令,如hadoop,hdfs等etcHadoop的配置文件目录,入hdfs-site.xml, core-site.xml等libHadoop本地库(解压缩的依赖)sbin存放的是 Hadoop 集群启动停止相关脚本,命令shareHadoop 的一些 jar,官方案例 jar,文档等
Hadoop/sbin下脚本
脚本描述start-all.sh启动所有的Hadoop守护进程。包括NameNode、Secondary NameNode、DataNode、ResourceManager、NodeManagerstop-all.sh停止所有的Hadoop
守护进程。包括NameNode、Secondary NameNode、DataNode、ResourceManager、NodeManagerstart-dfs.sh启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNodestop-dfs.sh停止Hadoop HDFS守护进程NameNode、SecondaryNameNode和DataNodehadoop-daemons.sh start namenode单独启动NameNode守护进程hadoop-daemons.sh stop namenode单独停止NameNode守护进程hadoop-daemons.sh start datanode单独启动DataNode守护进程hadoop-daemons.sh stop datanode单独停止DataNode守护进程hadoop-daemons.sh start secondarynamenode单独启动SecondaryNameNode守护进程hadoop-daemons.sh stop secondarynamenode单独停止SecondaryNameNode守护进程start-yarn.sh启动ResourceManager、NodeManagerstop-yarn.sh停止ResourceManager、NodeManageryarn-daemon.sh start resourcemanager单独启动ResourceManageryarn-daemons.sh start nodemanager单独启动NodeManageryarn-daemon.sh stop resourcemanager单独停止ResourceManageryarn-daemons.sh stopnodemanager单独停止NodeManagermr-jobhistory-daemon.sh start historyserver手动启动jobhistorymr-jobhistory-daemon.sh stop historyserver手动停止jobhistory
Web界面
NameNode 50070
DataNode 50075
ResourceManager 8088
NodeManager 8042
关闭防火墙:systemctl stop firewalld
开机时禁用防火墙:systemctl disable firewalld
集群规划
NameNode和SecondaryNameNode不要安装在同一台服务器(比较耗资源)
ResourceManager很消耗内存,不要和NameNode、SecondaryNameNode配置在一台机器上
框架node1node2node3HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNodeMapReduce无区分无区分无区分YARNNodeManagerResourceManager、NodeManagerNodeManager
HDFS集群配置
Hadoop 集群配置 = HDFS 集群配置 + MapReduce 集群配置 + Yarn 集群配置
1.将JDK路径明确配置给HDFS(修改hadoop-env.sh)
指定NameNode节点以及数据存储目录(修改core-site.xml)
指定SecondaryNameNode节点(修改hdfs-site.xml)
指定DataNode从节点(修改etc/hadoop/slaves文件,每个节点配置信息占一行)
2.MapReduce集群配置
将JDK路径明确配置给 MapReduce(修改 mapred-env.sh)
指定MapReduce计算框架运行 Yarn资源调度框架(修改mapred-site.xml)
3.Yarn集群配置
将JDK路径明确配置给Yarn(修改 yarn-env.sh)
指定ResourceManager老大节点所在计算机节点(修改yarn-site.xml)
指定NodeManager节点(会通过slaves文件内容确定)
节点说明NameNodeHadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存由metadataSecondaryNameNode它不是NameNode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并EditsLog,减少NN启动时间DataNode管理连接到节点的存储(一个集群可以有多个节点),每个存储数据的节点运行一个DataNode守护线程ResourcreManager(Job Tracker),负责调度DataNode上的工作,每个DataNode有一个TaskTracker,它执行实际工作ModeManager(Task Tracker)执行实际任务DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)JournalNode高可用情况下存放namenode的editlog文件
HDFS NameNode 内部通信端口:8020/9000
HDFS NameNode 对用户的查询端口:50070
Yarn查看任务运行情况:8088
历史服务器:19888
(1)解压到安装目录
tar -zxvf hadoop-2.10.2.tar.gz
(2)设置环境变量
export HADOOP_HOME=/home/environment/hadoop-2.10.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
使环境变量生效:source /etc/profile
测试是否配置成功:hadoop version
(3)配置hosts
vim /etc/hosts
192.168.50.129 node1
192.168.50.130 node2
192.168.50.131 node3
(4)配置slaves
指定datanode从节点(根目录/etc/hadoop/slaves文件,每个节点配置信息占一行)
vim /etc/hadoop/slaves
node1
node2
node3
(5)修改配置文件
配置Hadoop中相应的文件(文件均位于/etc/hadoop)
使用的是Hadoop的伪分布式,因此需要配置的文件如下:hadoop-env.sh、core-site.xml、mapred-site.xml、hdfs-site.xml、yarn-site.xml
(6)HDFS初始化只能在主节点上进行
注意:如果集群是第一次启动,需要Namenode所在节点格式化NameNode,非第一次不用执行格式化Namenode操作。
始化HDFS系统,在hadoop/bin目录下使用如下命令:
hdfs namenode -format
(7)配置ssh免密码登陆
解决运行start-yarn.sh需要输入密码
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(8)解决主节点远程访问从节点需要密码
①将主节点生成的密钥传给各个从节点(node1,node2)
②node1,node2节点将密钥添加到authorized_keys
scp ~/.ssh/id_rsa.pub node2:/home
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
最后将node1、node2、node3的id_rsa.pub分别添加到authorized_keys并同步到各自的服务器
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(9)启动
方式一:
./sbin/start-dfs.sh
./sbin/start-yarn.sh
①开启NameNode和DataNode守护进程:sbin/start-dfs.sh
查看Web UI,在浏览器中输入http://localhost:50070,即可查看相关信息。可以在终端使用netstat -ntlp查看一下服务器启动的端口
②start-yarn.sh
方式二:
在主节点启动即可,两个从节点会自动启动
start-all.sh(不推荐,可能会覆盖环境变量)
查看历史服务记录
./sbin/mr-jobhistory-daemon.sh start historyserver
./sbin/mr-jobhistory-daemon.sh stop historyserver
在浏览器中查看:
HDFS:http://192.168.50.129:50070
YARN:http://192.168.50.129:8088/cluster
(10)测试
①在HDFS上创建一个文件夹/test/input
cd /hadoop.2.10.2
./bin/hdfs dfs -mkdir -p /test/input
②创建一个word.txt测试文件
vim word.txt
he situation of your mother's family, though objectionable, was nothing in comparison to that total want of propriety so frequently, so almost uniformly betrayed by herself, by your three younger sisters, and occasionally even by your father. Pardon me. It pains me to offend you. But amidst your concern for the defects of your nearest relations, and your displeasure at this representation of them, let it give you consolation to consider that, to have conducted yourselves so as to avoid any share of the like censure
③将word.txt上传到HDFS的/test/inpu文件夹中
注意:要先上传文件在运行mapreduce程序
./bin/hdfs dfs -put word.txt /test/input
④运行一个mapreduce的例子程序:wordcount
./bin/hadoop jar /home/environment/hadoop-2.10.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount /test/input /test/output
任务启动后
第一步:代理客户端连接ResourceManager
第二步:FileInputFormat指定由三个input files进程
第三步:JobSubmitter 提交后有三个split
第四步:创建job序号,并提交job_1610510670587_0001
任务执行流程
第一步:yarn客户端进行提交应用
第二步:mapreduce根据url进行处理应用
第三步:mr运行job_1610510670587_0001
第四步:发现map和reduce处于传递执行(一方处理完后,传递到下一方),没有同时执行任务
⑤查看文件列表
./bin/hadoop fs -ls /test/input
⑥查看运行结果
./bin/hdfs dfs -cat /test/output/*
Hadoop解决SecondaryNameNode Web页面加载问题
/hadoop-2.10.2/share/hadoop/hdfs/webapps/static 替换文件
版权归原作者 未禾 所有, 如有侵权,请联系我们删除。