一、haoop解压、创建软连接
将hadoop-3.3.1.tar.gz上传到服务器hp1的/apps下
tar -xf hadoop-3.3.1.tar.gz -C /usr/local
进入/usr/local 后使用 ln -s hadoop-3.3.1 hadoop3 创建一个软连接
二、配置环境变量
在/etc/profile.d下使用vi命令新建hadoop.sh
export HADOOP_HOME=/usr/local/hadoop3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
以上可复制到vi编辑器中:
保存,调用 source hadoop.sh
测试版本号
hadoop version
三、配置hadoop环境脚本中的java参数
在hadoop3/etc/hadoop下的
[root@hadoop01 hadoop]# vim hadoop-env.sh
在文件最后添加上
export JAVA_HOME=$JAVA_HOME
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
四、创建Hadoop存储目录,在/目录下新建三个文件
[root@hp1 /]# mkdir -p hadoop_data/tmp
[root@hp1 /]# mkdir -p hadoop_data/dfs/name
[root@hp1 /]# mkdir hadoop_data/dfs/data
五、配置主从结点
删除hadoop3/etc/hadoop/workers中配置,将hp2、hp3添加到workers文件中作为集群的worker(一行一个)
六、Hadoop文件配置
配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hp1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/hadoop_data/tmp</value>
</property>
</configuration>
配置改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hp1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop_data/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop_data/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hp1</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hp1:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-site-xml:
<configuration>
<property><name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hp1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hp1:19888</value>
</property>
</configuration>
七、分发hp1的配置到hp2、hp3:
将hadoop远程复制到hp2 hp3上
[root@hp1 /]# scp -r /usr/local/hadoop-2.8.5/ hp2:/usr/local
[root@hp1 /]# scp -r /usr/local/hadoop-2.8.5/ hp3:/usr/local
然后分别在hp2、hp3建一个软连接。 ln -s hadoop-2.8.5 hadoop2
将hadoop 环境变量远程复制到hp2 hp3上
[root@hp1 /]# scp -r /etc/profile.d/hadoop.sh hp2:/etc/profile.d
[root@hp1 /]#scp -r /etc/profile.d/hadoop.sh hp3:/etc/profile.d
并在hp2、hp3中分别调用source hadoop.sh
将文件夹分发:
[root@hp1 /]# scp -r hadoop_data/ hp2:/
[root@hp1 /]# scp -r hadoop_data/ hp3:/
测试版本号 hadoop version
八、格式化主节点的存储目录
只对hp1的hadoop_data格式化。
第一次启动hadoop是需要格式化hadoop的namenode
命令:
hdfs namenode -format
九、启动hadooop
启动dfs
命令:start-dfs.sh
启动yarn
命令:start-yarn.sh
通过jps命令,可以查看hadoop启动的进程
在hp1结点上,正常应该包含
NameNode
SecondaryNameNode
ResourceManager
在hp2和hp3结点上,正常应该包含
DataNode
NodeManager
NameNode没有启动的解决方案
首先,打开hp1结点上的/usr/local/hadoop2下的logs文件夹中hadoop-namenode.hp1.log文件。
查看有什么Java异常信息。根据异常信息进行错误的解决。
如果异常仅仅显示IOExcepiton:NameNode is not formatted
则需要将hp1、hp2、hp3三个节点的/hadoop_data文件夹删除,然后重启三个节点,分别创建这一组目录,然后重新对hp01进行格式化。
关闭yarn
命令:stop-yarn.sh
关闭dsf
命令:stop-dfs.sh
十、测试hadoop安装
在web页面中查看hdfs和yarn
http://192.168.150.101:9870
http://192.168.150.101:8088