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
为了使用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
在顶部添加
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