ps:因为实验需要和学习过程,为了更好学习hadoop,所以为了方便记录以及供学习交流,特此做一份hadoop搭建实验记录。
1.准备三台虚拟机。
2.修改三台虚拟机的主机名分别为master,slave01,slave02
然后修改hosts文件:vi/etc/hosts,然后添加如下内容:(三台主机都要执行该步骤)
172.16.136.43 mMaster
172.16.136.39 mSlave01
172.16.136.38 mSlave02
3.配置ssh免密登陆和访问集群机器
(1)所有机器上安装ssh服务器
yum -y install openssh-server
(2)生成公钥
ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keys
(3)发送公钥
scp ~/.ssh/id_rsa.pub root@mSlave01:/home/
scp ~/.ssh/id_rsa.pub root@mSlave02:/home/
(4)在slave01和slave02上执行如下命令。
cat /home/id_rsa.pub >>~/.ssh/authorized_keys
(如果没有.ssh文件夹可以自己创建下 使用mkdir 在/root 文件下使用命令: mkdir .ssh )
(出现的问题,Permissions0644 for '/root/.ssh/id_rsa' are too open.
处理如下:在主控制机器上执行命令:chmod 600 ~/.ssh/id_rsa
然后执行:scp ~/.ssh/id_rsa.pubroot@mSlave02:/home/
在执行:ssh mSlave02 进行测试!成功!
自己给自己主机免密操作 ssh-copy-id –i mMaster(主机名)
SshmMaster 验证
)
(5)测试
ssh slave01
4.安装jdk (主机执行,后复制到节点机上)
(1)在/usr/目录下创建java目录
mkdir /usr/java
cd /usr/java
(2)把下载好的jdk上传到这个目录下,然后安装,
tar -zxvf jdk-8u151-linux-x64.tar.gz
(3)设置环境变量(使用命令:scp/usr/java mSlave01:/usr scp /usr/java mSlave02:/usr将java文件复制到其另外两台机器目录下,并且重新全部设置环境变量并刷新)
vi ~/.bashrc(这个文件必须配置这个路径,且不能取消)
export JAVA_HOME=/usr/java/jdk1.8.0_151
JAVA_HOME=/usr/java/jdk1.8.0_151
vi /etc/profile
在profile中添加如下内容:
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_151
JRE_HOME=/usr/java/jdk1.8.0_151/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
(4) 让配置生效
source /etc/profile
source ~/.bashrc
(5)验证
java -version
5.安装hadoop,先在master主机上做安装Hadoop,暂时不需要在slave01,slave02主机上安装Hadoop.稍后会把master配置好的Hadoop发送给slave01,slave02.在master主机执行下列操作:
(1)把下载好的安装包hadoop-2.7.3.tar.gz上传到/usr/local目录,然后解压安装
tar-zxvf hadoop-2.7.3.tar.gz
(2) 将文件夹名改为Hadoop
mv ./hadoop-2.7.3/ ./Hadoop
(3)编辑~/.bashrc文件
vi ~/.bashrc
添加如下内容:
export HADOOP_HOME=/usr/local/Hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin
更新
source ~/.bashrc
6.hadoop集群配置
在master主机下执行
cd /usr/local/Hadoop/etc/hadoop
(1)修改slaves:vi slaves
这里把DataNode的主机名写入该文件,每行一个。这里让master节点主机仅作为NameNode使用。
mSlave01
mSlave02
(2) 修改core-site.xml(内里的一些编码的对应的主机名也是要变换的,并且还是三台机器都是要做的。)
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://mMaster:9000
(3) 修改hdfs-site.xml:
dfs.replication
3
:
dfs.namenode.name.dir
file:/usr/local/hadoop/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/dfs/data
dfs.namenode.secondary.http-address
mMaster:9001
dfs.webhdfs.enabled
true
(4) 修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名)
直接执行如下命令即可完成复制
cp mapred-site.xml.template mapred-site.xml
在修改mapred-site.xml文件:vi mapred-site.xml
mapreduce.framework.name
yarn
(5) 修改yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
mMaster
6)配置好后,将 master 上的/usr/local/Hadoop 文件夹复制到各个节点上。之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 master 节点主机上执行:
cd /usr/local/
$rm -rf ./hadoop/tmp # 删除临时文件
$rm -rf ./hadoop/logs/* # 删除日志文件(这两步删除操作在本实验中不需要)
$tar -zcf ~/hadoop.master.tar.gz ./Hadoop(把hadoop目录压缩到hadoop.master.tar.gz文件中)
$cd ~
$scp ./hadoop.master.tar.gz mSlave01:/home(通过scp命令把刚刚压缩的文件发过去)
$scp ./hadoop.master.tar.gz mSlave02:/home
(7) 在mSlave01,mSlave02节点上执行:
$sudo rm -rf /usr/local/hadoop/(若已经有hadoop目录的话,就把它删除)
$sudo tar -zxf /home/hadoop.master.tar.gz -C /usr/local
$sudo chown -R hadoop /usr/local/hadoop(这一步是在用hadoop时用来获取权限的,本实验用的是root用户,不需要)
7.启动集群
格式化主节点:hdfs namenode -format
启动:start-all.sh
查看节点:jps
错误1:查看的时候遇到了一个错误,datanode,启动不了,弄了好久,最后发现是hdfs-site.xml有一个单词少了一个字母,当时在master节点改过来了,却忘记在slave01和slave02改过来,我觉得这是跟我当时做这个的时候心情烦躁,所以注意力不集中的导致的。最后是第二天早上过来查看slave01和slave02的日志才发现的。这就告诉我们做实验的时候,注意力一定要集中,还有出了错误一定要首先去看日志找错误原因。
错误2:错误一解决了之后,又出现了一个错误,slave01节点的datanode无法启动,原因是格式化太多次,id不同步导致的,删除dfs下data的所有文件然后重新格式化和启动集群即可。
错误3:在创建hadoop的过程中,对于主机namenode节点也是必须要将主机mMaster作为自己的子节点进行免密操作。
错误4:在对于的一些的xml文件的修改中一定切记切记就是要将的主机名的那处位置进行更改,不能就是别人所写的进行复制黏贴而已。
错误5:java路径的配在的配置文件中的有两个文件,最好是配置在~/.bashrc中,这个是针对于用户所写的,并且对于jdk的配置,多少台机器都是要安装,并且在各种修改配置文件之后,记得一定是要将的配置文件更新,使用source命令。
错误6:在针对如果的进行免密操作的时候,常常出现的6040权限过大的问题,按照的教程中的,需要将其中的权限修改为600即可,如果教程不够详尽,可以百度查询都有。
错误7:对于的子节点的文件配置中,在配置xml文件的时候,也必须记得配置slaves文件,使用命令 :vi slaves (在cd /usr/local/Hadoop/etc/hadoop目录下),之前看教程不够仔细,忽略了。