Hadoop安装(伪集群)

1、安装准备

linux(centos64位)系统
java jdk1.8
全文使用root账户

2、SSH设置和密钥生成

下面的命令用于生成使用SSH键值对。复制公钥形成 id_rsa.pub 到authorized_keys 文件中,并提供拥有者具有authorized_keys文件的读写权限。

$ ssh-keygen -t rsa
$ cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys
$ chmod 0600 /.ssh/authorized_keys

注意输入完ssh-keygen -t rsa 可直接回车完成
下面会使用为集群模式安装,hadoop用户之间需要免密访问,如果不设置安装时会出现权限问题,
如下:permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password)。

3、下载hadoop解压

$ cd /usr/local
$ wget http://apache.claz.org/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz
$ tar xzf hadoop-3.0.3.tar.gz

4、配置系统环境变量

找到/etc/profile文件(centos系统)在底部添加配置

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

注意
如果不添加最后一行配置可能会出现:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
修改完系统环境变量执行立即生效
$ source /etc/profile

5、配置hadoop

目录:/usr/local/hadoop/etc/hadoop

修改 hadoop-env.sh

为了使用Java开发Hadoop程序,必须用java在系统中的位置替换JAVA_HOME值并重新设置hadoop-env.sh文件的java环境变量。

export JAVA_HOME=/usr/java/jdk1.8.0_181

注意
这里的值填写本机安装的jdk目录

修改 core-site.xml

core-site.xml文件中包含如读/写缓冲器用于Hadoop的实例的端口号的信息,分配给文件系统存储,用于存储所述数据存储器的限制和大小。 打开core-site.xml 并在,标记之间添加以下属性。

<property>
  <name>fs.default.name </name>
  <value> hdfs://localhost:9000 </value>
</property>

修改 hdfs-site.xml

hdfs-site.xml 文件中包含如复制数据的值,NameNode路径的信息,,本地文件系统的数据节点的路径。这意味着是存储Hadoop基础工具的地方。

打开这个文件,并在这个文件中的标签之间添加以下属性。

<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

<property>
  <name>dfs.name.dir</name>
  <value>file:///usr/local/hadoop/hadoopinfra/hdfs/namenode </value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>file:///usr/local/hadoop/hadoopinfra/hdfs/datanode </value>
</property>

注意
需创建hadoopinfra/hdfs/namenode和hadoopinfra/hdfs/datanode 目录。
上面配置属性的值根据实际安装目录修改。

修改 yarn-site.xml

yarn-site.xml此文件用于配置成yarn在Hadoop中。打开 yarn-site.xml文件,并在文件中的标签之间添加以下属性。

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<property>
	<name>yarn.application.classpath</name>
	<value>/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/share/hadoop/yarn:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*</value>
</property>

<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
	<description>Whether virtual memory limits will be enforced for containers.</description>
</property>

注意
yarn.application.classpath的值可以用hadoop classpath命令查询得到,如果不配置的话在执行MapReduce的时候可能会报下面错误:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster。
yarn.nodemanager.vmem-check-enabled的值设置false表示执行MapReduce时不检查内存,笔者因使用虚拟机安装而虚拟内存设置较小,不设置的话可能会出现错误:running beyond virtual memory limits,生产环境需酌情设置。

修改 mapred-site.xml

mapred-site.xml此文件用于指定正在使用MapReduce框架。
打开mapred-site.xml文件,并在此文件中的标签之间添加以下属性。

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

修改 mapred-site.xml

mapred-site.xml此文件用于指定正在使用MapReduce框架。
打开mapred-site.xml文件,并在此文件中的标签之间添加以下属性。

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

目录:/usr/local/hadoop/sbin

修改 start-dfs.sh

start-dfs.sh是hadoop启动文件之一
在顶部添加

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

修改 stop-dfs.sh

在顶部添加

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

修改 start-yarn.sh

在顶部添加

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改 stop-yarn.sh

在顶部添加

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

6、验证Hadoop安装

第1步:名称节点设置 使用命令“hdfs namenode -format”如下设置名称节点。

$ hdfs namenode -format

第2步:验证Hadoop的DFS 下面的命令用来启动DFS。执行这个命令将启动Hadoop文件系统。

$ start-dfs.sh

第3步:验证Yarn 脚本 下面的命令用来启动yarn脚本。执行此命令将启动yarn守护进程。

$ start-yarn.sh

第4步:如果以上命令没有报错,输入jps命令查看启动进程

$ jps

26176 SecondaryNameNode
26304 Jps
25843 DataNode
21770 NodeManager
21612 ResourceManager
25676 NameNode

如果出现以上内容表示启动成功!
可以在浏览器中查看hdfs和mr的状态.hdfs管理界面:http://localhost:50070 MR的管理界面:http://localhost:8088

7、hdfs基本操作和wordcount程序

1、进入hadoop安装目录中的share:/cloud/hadoop/share/hadoop/mapreduce

2、ls列出当前路径下的文件,内容如下,其中带有example字样的为样例程序
hadoop-mapreduce-client-app-3.0.3.jar
hadoop-mapreduce-client-common-3.0.3.jar
hadoop-mapreduce-client-core-3.0.3.jar
hadoop-mapreduce-client-hs-3.0.3.jar
hadoop-mapreduce-client-hs-plugins-3.0.3.jar
hadoop-mapreduce-client-jobclient-3.0.3.jar
hadoop-mapreduce-client-jobclient-3.0.3-tests.jar
hadoop-mapreduce-client-shuffle-3.0.3.jar
hadoop-mapreduce-examples-3.0.3.jar

3、新建words文件(可在任何目录下),内容输入如下
hello tom
hello kitty
hello world
hello tom
然后在words文件目录下使用命令上传到hdfs目录下:

 hadoop fs -put words /words

4、在/cloud/hadoop/share/hadoop/mapreduce目录下,命令行中敲入:

hadoop jar hadoop-mapreduce-examples-3.0.3.jar wordcount /words /out

这里注意安装的jar包的版本号,hadoop会执行mapreduce程序job统计words文件里的单词数量并输出到out文件夹里
hadoop-mapreduce-examples-3.0.3.jar是统计单词的示例程序

5、查看输出内容
先查询out文件夹是否有内容

hadoop fs -ls /out

查询out目录下part-r-00000文件

hadoop fs -cat /out/part-r-00000

hello	4
kitty	1
tom	2
world	1

如果得到上面单词统计结果那么就恭喜你了!

本文参考:
https://www.yiibai.com/hadoop/hadoop_enviornment_setup.html
https://www.cnblogs.com/gyouxu/p/4183417.html

02-23 02:49