Hadoop教程

关于Hadoop搭建经验

本文主要是介绍关于Hadoop搭建经验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

          

步骤一:vi  /etc/sysconfig/network-scripts/ifcfg-ens33 修改虚拟机IP地址

vi /etc/hosts

192.168.10.10 master

192.168.10.11 slave1

192.168.10.12 slave2    记录各虚拟机IP地址,

vi  /etc/hostname

master slave1 slave2

互相ping,使可以互相连接。

reboot

步骤二:systemctl stop firewalld  关闭防火墙 reboot

#ssh-keygen -t rsa生成密钥对

cd .ssh

cat id_rsa.pub

查看密钥

在.ssh下编辑.

vi  authorized_keys

将密钥复制

保存退出

scp  authorized_keys  root@slave1:/root/.ssh/

scp  authorized_keys  root@slave2:/root/.ssh/

三台虚拟机互相连接

步骤三:

拖拽压缩包

# tar -xvf jdk-8u161-linux-x64.tar.gz

# mv jdk1.8.0_161/ /usr/local/jdk1.8

# cd  /usr/local

在local目录下编辑

#vi  /etc/profile  在末尾添加以下的内容:

export JAVA_HOME=/usr/local/jdk1.8/

export JRE_HOME=/usr/local/jdk1.8/jre

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

之后执行命令:#source /etc/profile

  1. 从master虚拟机拷贝jdk到slave1和slave2;

参考命令:

#scp  -r  /usr/local/jdk1.8  root@slave1:/usr/local/

 其中-r参数表示递归复制该目录下的所有目录和文件。

#scp  -r  /usr/local/jdk1.8  root@slave2:/usr/local/

#scp  /etc/profile  root@slave1:/etc/profile

#scp  /etc/profile  root@slave2:/etc/profile 从master虚拟机拷贝/etc/profile到slave1和slave2并执行

#source  /etc/profile

步骤四、安装hadoop完全分布式集群

  1. 下载hadoop软件包解压到master虚拟机/usr/local/hadoop;

# tar -zxvf hadoop-2.6.0.tar.gz

移动Hadoop

mv hadoop-2.6.0/ /usr/local/hadoop注:在普通用户下移动

cd /usr/local/hadoop

mkdir tmp

vi  /etc/profile

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:${PATH}

export HADOOP_MAPRED_HOME=${HADOOP_INSTALL}

export HADOOP_COMMON_HOME=${HADOOP_INSTALL}

export HADOOP_HDFS_HOME=${HADOOP_INSTALL}

export YARN_HOME=${HADOOP_INSTALLL}

cd  /usr/local/hadoop/etc/hadoop

  1. vim  hadoop-env.sh

注意这里写的路径要对应实际的路径,下同

  1. vim  yarn-env.sh

  1. vim  mapred-env.sh

  1. vim  core-site.xml

注意这两个value的值,路径要修改为实际的路径,hdfs://master主机的主机名。

<configuration>

 <property><!--hadoop临时文件的存放目录-->

  <name>hadoop.tmp.dir</name>

  <value>/usr/local/hadoop/tmp</value>

 </property>

 <property><!--NameNode 的URI默认端口为8020-->

  <name>fs.default.name</name>

  <value>hdfs://master</value>

 </property>

</configuration>

  1. vim  hdfs-site.xml

注意这里的value要改成实际情况中的路径,数据需要备份的数量不能大于集群的机器数量,默认为3,由于只准备了两台slave虚拟机,所以已经改成2了。

<configuration>

 <property><!--namenode持久存储名字空间及事务日志的本地文件系统路径-->

  <name>dfs.name.dir</name>

  <value>/usr/local/hadoop/dfs/name</value>

 </property>

 <property><!--DataNode存放块数据的本地文件系统路径-->

  <name>dfs.data.dir</name>

  <value>/usr/local/hadoop/dfs/data</value>

 </property>

 <property><!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->

  <name>dfs.replication</name>

  <value>2</value>

 </property>

</configuration>

  1. vim  yarn-site.xml

注意这里需要修改主机名为master虚拟机的主机名,其它的用默认的就行了。

<configuration>

<!-- Site specific YARN configuration properties -->

<property><!--NodeManager上运行的附属服务,用于运行mapreduce-->

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

<property> <!--ResourceManager 对客户端暴露的地址-->

  <name>yarn.resourcemanager.address</name>

  <value>master:8032</value>

</property>

<property><!--ResourceManager 对ApplicationMaster暴露的地址-->

<name>yarn.resourcemanager.scheduler.address</name>

  <value>master:8030</value>

</property>

<property><!--ResourceManager 对NodeManager暴露的地址-->

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>master:8031</value>

</property>

<property><!--ResourceManager 对管理员暴露的地址-->

<name>yarn.resourcemanager.master.address</name>

 <value>master:8033</value>

</property>

<property><!--ResourceManager 对外web暴露的地址,可在浏览器查看-->

<name>yarn.resourcemanager.webapp.address</name>

<value>master:8088</value>

</property>

</configuration>

(7)vim  mapred-site.xml  (拷贝 mapred-site.xml.template)

#cp  mapred-site.xml.template  mapred-site.xml

#vim  mapred-site.xml

<configuration>

 <property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

 </property>

</configuration>

(8) vi slaves

Slave1

Slave2

#scp  -r  /usr/local/hadoop  root@slave1:/usr/local/

#scp  -r  /usr/local/hadoop  root@slave2:/usr/local/

scp  /etc/profile  root@slave1:/etc/profile

#source  /etc/profile

步骤五、初始化hdfs启动hadoop集群(20

查看防火墙systemctl status firewalld

  1. 在master虚拟机上执行hdfs初始化;

首先在进入相应的目录,例如:cd /usr/local/hadoop/bin

执行命令:./hadoop  namenode  -format

不报错的话,即执行成功,如图:      

格式化成功后,可以在看到在hadoop/dfs/name/目录多了一个current目录

  1. 在master虚拟机使用脚本启动hadoop集群;

可以先进入相应的目录,例如:cd /usr/local/hadoop/sbin/

脚本启动hadoop集群: ./start-all.sh

在slave1和slave2中用jps检查是否成功启动。

这时可以用浏览器访问网页内容

停止集群 ./stop-all.sh

步骤六:#hdfs dfs -ls  /  可以查看hdfs的根目录。

# hdfs dfs -mkdir /input          在根目录建立input目录

hdfs dfs -put  /root/anaconda-ks.cfg   /input

注意关闭防火墙

  1. 在master虚拟机运行hadoop例程中自带的wordcount程序

参考示例:注意路径可能不同,要写实际的路径。

# hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /input/*   /output

使用hdfs dfs -ls 命令查看wordcount程序运行结果目录

#hdfs dfs -ls / output

使用hdfs dfs -cat命令查看wordcount程序运行结果内容

# hdfs dfs -cat /output/part-r-00000

总结:

在学习中,遇到了各种错误,第一步可能会发生编辑的错误导致在xshell连接失败

还有net 桥连接要配置成功

第二步中容易将authorized_keys建立在其他目录,导致连接的失败

第三步中解压jdk1.8,我在操作的几遍中基本正确

第四步vi编辑要记住指令与

从master虚拟机拷贝hadoop到slave1和slave2中步骤要按部就班

第五步要关闭防火墙,在第二遍中因为防火墙没关导致在网页无法连接

第六步基本无错误

查看防火墙systemctl status firewalld

这篇关于关于Hadoop搭建经验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!