前置1:配置好java
vim /etc/profile
#java
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
前置2:主机映射配置,配置后要重启(虚拟机为centos7)
设置自己的主机名
vim /etc/hostname,将localhost改成hadoop100
配置IP-主机名映射
vim /etc/hosts
#ip地址 主机名/域名 (主机别名) 192.168.10.100 hadoop100
vi /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=hadoop100
重启:reboot
前置3:安装SSH服务
#root账号登录安装SSH
yum install -y openssl openssh-server
yum install rsync
#root账户修改配置文件,去掉permitrootlogin前面的注释
vim /etc/ssh/sshd_config
#启动SSH服务:
systemctl start sshd.service
#设置SSH开机自启动:
systemctl enable sshd.service
(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,分布式部署需要)
1、配置Hadoop
1.1 进入配置目录,命令:cd /opt/hadoop/etc/hadoop
1.2 修改Hadoop配置文件 core-site.xml
命令:vim core-site.xml
键盘输入i进入编辑状态,在<configuration></configuration>节点内插入如下内容
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/tmp</value>
<description>location to store temporary files</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
操作esc,输入:wq,退出编辑并保存
1.3 修改Hadoop配置文件 hdfs-site.xml
(初始配置没加最后一项,导致9870无法访问,需要配置最后一项)
同路径下,输入命令:vim hdfs-site.xml
键盘输入i进入编辑状态,在<configuration></configuration>节点内插入如下内容
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/tmp/dfs/data</value>
</property><property>
<name>dfs.http.address</name>
<value>本机ip:9870</value>
</property>
操作esc,输入:wq,退出编辑并保存
1.3 配置 mapred-site.xml,在<configuration></configuration>节点内插入如下内容
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
1.4 配置 yarn-site.xml,在<configuration></configuration>节点内插入如下内容
(起初搭建只配置了前两项内容,启动后8088不能访问)
<property>
<name>yarn.resourcemanager.hostname</name>
<value>xxxx</value> <!--填写自定义的主机名/ip-->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>0.0.0.0:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>0.0.0.0:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>0.0.0.0:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>0.0.0.0:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
2、配置SSH免密登录(分布式)
2.1 切换目录,命令:cd ~
2.2 执行命令,创建公钥和私钥 ssh-keygen -t rsa,根据提示一路回车,再切换至路径 cd .ssh,然后输入命令: cat id_rsa.pub >> authorized_keys,将公钥添加到authorized_keys文件中
由此生成一个私钥和一个公钥,存储在/root/.ssh/目录下(目录实际情况按自己的来)
2.3 主机与节点之间的免密登录
#登录主机hadoop100
scp id_rsa.pub hadoop@hadoop101:/opt/hadoop/
#登录节点机器hadoop101
cat id_rsa.pub >> ~/.ssh/authorized_keys
##登录主机hadoop100测试免密登录hadoop101
ssh hadoop101
3、 切换路径 cd ~,vim /etc/profile,在环境变量中添加下面的配置,编辑完成保存后,输入命令source /etc/profile,使配置生效
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
4、启动Hadoop
切换到目录 cd /opt/hadoop/bin,然后输入命令:hadoop namenode -format,初始化namenode(如果有提示选择y/n,输入y)。
切换到cd /opt/hadoop/sbin,然后输入命令:start-dfs.sh,然后输入命令:start-yarn.sh,再输入jps查看,如下图的6个进程
打开浏览器访问:http://XXXX:8088/cluster和http://XXXX:50070
问题:如果进程里面没有DataNode,为重新初始化后/opt/hadoop/tmp/dfs/name/current/VERSION与/opt/hadoop/tmp/dfs/data/current/VERSION的clusterID不一致,可以按照如下操作:
停止进程:stop-all.sh
将/opt/hadoop/tmp/dfs/name/current/VERSION的clusterID的值复制到/opt/hadoop/tmp/dfs/data/current/VERSION的clusterID上。
重新启动进程:start-dfs.sh,start-yarn.sh(注意:初始化命令hadoop namenode -format不用操作,不然又会导致不一致)