hadoop 安装 (单机模式)

禁用 selinux 和 iptables
禁用 selinux 和 iptables
禁用 selinux 和 iptables
配置 /etc/hosts 保证所有主机域名能够相互解析
配置 /etc/hosts 保证所有主机域名能够相互解析
配置 /etc/hosts 保证所有主机域名能够相互解析

1、安装 java
yum install java-1.8.0-openjdk -y

验证:
java -version

2、安装 jps
yum install java-1.8.0-openjdk-devel -y

验证:
jps

3、安装 hadoop
tar zxf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 /usr/local/hadoop

修改配置文件的运行环境:
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

验证:
cd /usr/local/hadoop
./bin/hadoop version

统计分析热词
创建数据源
mkdir input
在这个文件夹里面放入需要统计分析的数据
cp *.txt input/

统计分析1 单词出现的频率
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

统计分析2 某一个关键词出现的频率,例如 dfs 这个词前面字母是 h 的出现的频率
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output1 '(?<=h)dfs'

排错 1
提示 JAVA_HOME is not set and could not be found
表示 JAVA_HOME 没有设置
解决方法:
设置 hadoop-env.sh 里面的 JAVA_HOME 或在运行脚本前面加入前置变量设置
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre" ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

排错 2
提示 java.net.UnknownHostException: host: host: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
表示主机名没有 IP 解析
解决方法:
在 /etc/hosts 里面增加 主机名 IP 对应关系

排错 3
提示:17/07/24 23:10:46 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/usr/local/hadoop/output already exists
表示输出的文件目录已经存在
解决方法:
删除已经存在的目录或更改结果保存位置

伪分布式配置:

xml 配置格式

关键字
变量值
描述

配置文件路径 /usr/local/hadoop/etc/hadoop/
1 配置 hadoop-env.sh
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
查找 JAVA_HOME
readlink -f $(which java)

2 配置 core-site.xml
https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml



fs.defaultFS
file:///


hadoop.tmp.dir
/var/hadoop

3 配置 hdfs-site.xml
https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml



dfs.replication
2
文件复制份数


dfs.namenode.http-address
192.168.4.10:50070


dfs.namenode.secondary.http-address
192.168.4.10:50090

常用配置选项
dfs.namenode.name.dir
dfs.datanode.data.dir
dfs.namenode.http-address
dfs.namenode.secondary.http-address
dfs.webhdfs.enabled
dfs.permissions.enabled

4 配置 mapred-site.xml
https://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml



mapreduce.framework.name
yarn


mapreduce.jobtracker.http.address
master:50030


mapreduce.jobhistory.address
master:10020


mapreduce.jobhistory.webapp.address
master:19888

常用配置选项
mapreduce.framework.name
mapreduce.jobtracker.http.address
mapreduce.jobhistory.address
mapreduce.jobhistory.webapp.address

5 配置 yarn-site.xml
https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml




    
        yarn.nodemanager.aux-services
        myhadoop
    

    
        yarn.resourcemanager.hostname
        master
    

常用配置选项
yarn.nodemanager.aux-services
yarn.nodemanager.aux-services.mapreduce.shuffle.class
yarn.resourcemanager.hostname


hadoop 完全分布式安装
1、规划集群 namenode ,secnedorynamenode, datanode

使用 4 台机器组件集群,其中 1台作为 master,其他3台做为 node 节点
master 上的角色 namenode , secnedorynamenode
node 上的角色 datanode

master ip => 192.168.4.10
node ip => 192.168.4.{11,12,13}

修改 /etc/hosts ,配置 ip 与名称的对应关系

禁用防火墙,禁用 selinux

在所有机器上 安装 java 运行环境 openjdk 和 jps 工具

在机器上设置 ssh-key 信任登录,保证 master 能登录所有主机,包括自己

在 master 上安装配置:
1、把软件解压拷贝到 /usr/local/hadoop

2、编辑配置文件

hadoop-env.sh

配置 JAVA_HOME , HADOOP_CONF_DIR

xml 配置格式

关键字

描述说明

core-site.xml


fs.defaultFS
hdfs://master:9000


hadoop.tmp.dir
/var/hadoop
A base for other temporary directories.

hdfs-site.xml


dfs.namenode.http-address
master:50070


dfs.namenode.secondary.http-address
master:50090


dfs.replication
2

配置 slaves ,写入所有 datanode 节点
node01
node02
node03

同步所有文件到所有节点

在所有节点上创建 hadoop.tmp.dir 指定的文件夹

在 master 上执行格式化 namenode 的操作
./bin/hdfs namenode -format

启动集群
./sbin/start-dfs.sh

验证集群:
在 master 上
jps 能看见 namenode ,secondarynamenode
netstat -ltunp 能看见 9000,50070,50090 端口被监听

在 node 上
jps 能看见 datanode
netstat -ltunp 能看见 50075 被监听

排错:
所有的日志在本机的 logs 里面,查看对应的角色日志

通过 web 访问 hdfs角色
http://192.168.4.10:50070/
http://192.168.4.10:50090/
http://192.168.4.12:50075/

hdfs 基本使用
./bin/hadoop fs -ls /
./bin/hadoop fs mkdir /input
./bin/hadoop fs put *.txt /input

配置 mapred-site.xml


    
       mapreduce.framework.name
       yarn
    
    
       mapreduce.jobtracker.http.address
       master:50030
    

配置 yarn-site.xml




   
       yarn.nodemanager.aux-services
       mapreduce_shuffle
   
   
       yarn.resourcemanager.hostname
       master
   

配置以后同步到所有机器
启动服务
./sbin/start-yarn.sh

验证配置:
在 master 上 jsp 能看见 resourecemanager,并且 netstat 可以看见 8088 端口打开
可以访问 http://master:8088/
在 node 上 jps 可以看见 nodemanager ,并且 netstat 可以看见 8042 端口打开
可以访问 http://node01:8042/

在集群上做数据分析
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep hdfs://192.168.4.10:9000/input hdfs://192.168.4.10:9000/output '(?<=h)dfs'

查看分析结果
./bin/hadoop fs -cat hdfs://192.168.4.10:9000/output/*