初学hadoop,虽然有公司有已配置好的hadoop环境,但是为了加深理解,还是决定自己搭建1次。hadoop环境的搭建其实进程其实不多,关键是后面修改配置文件时容易出现很多的问题,这几天用了很多时间,反复装反复改,终究把环境全部装好。下面就来回顾1下搭建进程。
1、linux安装环境与安装包。
CentOS 7 3台 (已提早装好,网络地址转换使用NAT模式,确保主机之间可以相互ping通)
hadoop-master :192.168.15.128
hadoop-slave1 :192.168.15.129
hadoop-slave2 : 192.168.15.130 //静态IP
java安装包 jdk⑻u111-linux-x64.rpm
hadoop安装包 hadoop⑵.7.1.tar.gz
2、主机之间配置ssh免密钥登录。
1、 主机A:ssh-keygen–t rsa
2、 A机.ssh下:scp id_rsa.pub hadoop@192.168.15.129:/home/hadoop/.ssh/id_rsa.pub(复制公钥到B机)
3、 B机.ssh下: cat id_rsa.pub >> authorized_keys(添加公钥)(B主机需要先创建好.ssh文件夹)
4、 B机.ssh下:chmod 600 authorized_keys (修改文件权限)
5、 B机~下:chmod 700 .ssh (修改文件夹权限)
3、安装jdk。
1、官网下载jdk⑻u111-linux-x64.rpm安装包。
2、将安装包放到/usr/java/下解压,输入命令,tar -zxvf jdk⑺u79-linux-x64.gz。
3、编辑/etc/profile,添加:
JAVA_HOME=/usr/java/jdk1.8.0_111
JRE_HOME=/usr/java/jdk1.8.0_111/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
4、使配置生效,输入命令,source /etc/profile。
5、检查是不是安装成功,java -version,完成。
4、hadoop安装。
1、将hadoop⑵.7.1.tar.gz放在/home/hadoop/下,解压:tar -xzvf hadoop⑵.7.0.tar.gz。
2、修改配置文件。(重点来了!!!)
(1)需要修改的文件基本上都在 /hadoop⑵.7.1/etc/hadoop/下(有1特例,.bashrc最后会讲)
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.15.128:8020</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.15.128:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/hadoop_tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/nameNodeData</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/dataNodeData</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://hadoop-master</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/jobTracker</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/home/hadoop/hadoop⑵.7.1/etc/hadoop,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
下面两个文件修改的地方只有1处,只需export JAVA_HOME 便可。
hadoop-env.sh:
yarn-env.sh:
最后1步,很重要!!!
前面提到了,还有1个.bashrc文件不在/hadoop/hadoop⑵.7.1/etc/hadoop/下的,这个文件就在hadoop下,由因而1个隐藏文件,ls -a 便可查看。
添加以下内容:
export JAVA_HOME=export JAVA_HOME=/usr/java/jdk1.8.0_111
export HADOOP_HOME=/home/hadoop/hadoop⑵.7.1
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
1开始没有修改这个文件,总是会出现
毛病: 找不到或没法加载主类 org.apache.hadoop.hdfs.server.namenode.NameNode
这样的问题,缘由就是找不到hadoop路径,致使hdfs节点出错。
以上所有步骤完成便可运行hadoop程序,我也从网上找了1下类似单词计数、单词排序等小程序测试,都可顺利实现。唯1缺点就是mapreduce进程太耗时。
总结:从虚拟机安装、linux系统安装、hadoop安装,前前后后花了1周时间,但是后面看来是值得的,现在刚刚开始接触hadoop,对这些基础性的知识还是需理解清楚,在后面hadoop实际开发中能够节俭很多查错改错的时间。我也是个初学者,以上的配置个人也是通过网上和导师电脑上的配置结合,最后总结出来的。使用相同方法应当是可以很快搭建好hadoop平台的,希望能给和我1样刚刚接触hadoop的同学带来1些帮助。
下一篇 MySQL表的操作(二)