zoukankan      html  css  js  c++  java
  • hadoop

    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 配置格式
    <property>
    <name>关键字</name>
    <value>变量值</value>
    <description> 描述 </description>
    </property>

    配置文件路径 /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

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>file:///</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop</value>
    </property>
    </configuration>

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

    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    <description> 文件复制份数 </description>
    </property>
    <property>
    <name>dfs.namenode.http-address</name>
    <value>192.168.4.10:50070</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>192.168.4.10:50090</value>
    </property>
    </configuration>

    常用配置选项
    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

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    <property>
    <name>mapreduce.jobtracker.http.address</name>
    <value>master:50030</value>
    </property>
    <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
    </property>
    <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
    </property>
    </configuration>

    常用配置选项
    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

    <configuration>

    <!-- Site specific YARN configuration properties -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>myhadoop</value>
    </property>

    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
    </property>
    </configuration>


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

    思考:NFS如何绑定硬盘使用?


    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 配置格式
    <property>
    <name>关键字</name>
    <value>值</value>
    <description>描述说明</description>
    </property>

    core-site.xml
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop</value>
    <description>A base for other temporary directories.</description>
    </property>
    </configuration>

    hdfs-site.xml
    <configuration>
    <property>
    <name>dfs.namenode.http-address</name>
    <value>master:50070</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    </configuration>

    配置 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
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

    配置 yarn-site.xml
    <configuration>

    <!-- Site specific YARN configuration properties -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
    </property>
    </configuration>

    配置以后同步到所有机器
    启动服务
    ./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/*

    hdfs 进阶应用 NFS 网关
    core-site.xml
    hadoop.proxyuser.nfsgw.groups
    hadoop.proxyuser.nfsgw.hosts
    * 表示全部允许

    hdfs-site.xml
    nfs.exports.allowed.hosts (* rw)
    dfs.namenode.accesstime.precision (3600000)
    nfs.dump.dir (/tmp/.hdfs-nfs)
    nfs.rtmax (4194304)
    nfs.wtmax (1048576)
    nfs.port.monitoring.disabled (false)

    这里要注意 关闭系统的 portmap 和 nfs 服务添加用户

    重启 hdfs 集群服务 ./bin/hdfs dfsadmin -report
    启动 portmap ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
    服务
    启动 nfs3 服务
    sudo -u 你core-site里面配置的用户 ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3

    zookeeper 安装

    1 禁用防火墙和 selinux
    2 设置 /etc/hosts ip 主机名对应关系
    3 安装 openjdk

    zookeeper 角色,选举
    leader 集群主节点
    follower 参与选举的附属节点
    observer 不参与选举的节点,同步 leader 的命名空间

    1 拷贝配置文件
    /usr/local/zookeeper/conf/zoo_sample.cfg 到
    /usr/local/zookeeper/conf/zoo.cfg

    2 修改配置文件
    server.1=zk1:2888:3888
    server.2=zk2:2888:3888
    server.3=zk3:2888:3888
    server.4=zk4:2888:3888:observer

    3 创建目录 zookeeper 配置文件里面的 dataDir 指定的目录
    4 在目录下创建 myid 文件,写入自己的 id 值
    5 启动集群,查看角色
    /usr/local/zookeeper/bin/zkServer.sh start
    /usr/local/zookeeper/bin/zkServer.sh status

    kafka 集群安装
    1 禁用防火墙和 selinux
    2 设置 /etc/hosts ip 主机名对应关系
    3 安装 openjdk
    4 安装 kafka 到 /usr/local/kafka
    5 修改配置文件 config/server.properties
    broker.id= id值不能相同
    zookeeper.connect=zk1:2181,zk4:2181

    启动 kafka
    /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

    验证:
    jps 能看到 kafka
    netstat 能看到 9092 被监听

    创建主题
    bin/kafka-topics.sh --create --zookeeper zk4:2181 --replication-factor 1 --partitions 1 --topic nsd1703

    查看显示已存在的主题
    bin/kafka-topics.sh --list --zookeeper zk4:2181

    查看主题的详细信息
    bin/kafka-topics.sh --describe --zookeeper zk1:2181,zk2:2181 --topic nsd1703

    生存者发布信息
    bin/kafka-console-producer.sh --broker-list zk1:9092,zk3:9092 --topic nsd1703

    消费者消费信息
    bin/kafka-console-consumer.sh --zookeeper zk1:2181,zk2:2181 --topic nsd1703 --from-beginning
    bin/kafka-console-consumer.sh --bootstrap-server zk1:9092,zk4:9092 --topic nsd1703

    from-beginning 是从头开始消费消息

    hadoop 高可用
    core-site.xml
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop</value>
    </property>
    <property>
    <name>ha.zookeeper.quorum</name>
    <value>node1:2181,node2:2181,node3:2181</value>
    </property>
    </configuration>

    hdfs-site.xml
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>

    <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
    </property>
    <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>master1:8020</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>master2:8020</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>master1:50070</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>master2:50070</value>
    </property>
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
    </property>
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/var/hadoop/journal</value>
    </property>
    <property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
    </property>
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    </configuration>

    同步配置到所有集群机器
    在其中一台初始化 zookeeper 集群 bin/hdfs zkfc -formatZK
    在定义的节点启动 journalnode sbin/hadoop-daemon.sh start journalnode
    在其中一台 namenode 上执行格式化命令 bin/hdfs namenode –format
    格式化以后把数据目录拷贝到另一台 namenode
    初始化 JournalNode ./bin/hdfs namenode -initializeSharedEdits
    停止 JournalNode sbin/hadoop-daemon.sh stop journalnode
    启动 dfs ./sbin/start-dfs.sh
    验证配置 bin/hadoop dfsadmin -report
    查看集群状态 bin/hdfs haadmin -getServiceState nn1 bin/hdfs haadmin -getServiceState nn2
    bin/hadoop fs -ls hdfs://mycluster/
    bin/hadoop fs -mkdir hdfs://mycluster/input
    验证高可用,关闭 active namenode
    sbin/hadoop-daemon.sh stop namenode


    <configuration>

    <!-- Site specific YARN configuration properties -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>master1</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>master2</value>
    </property>
    <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>node1:2181,node2:2181,node3:2181</value>
    </property>
    <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-ha</value>
    </property>
    </configuration>

    启动服务,检查状态
    sbin/start-yarn.sh
    bin/yarn rmadmin -getServiceState rm1
    bin/yarn rmadmin -getServiceState rm2

  • 相关阅读:
    SVN访问配置及常用操作
    SVN配置
    在Eclipse中创建maven项目
    Maven的基础之环境配置
    线程池理解
    JVM之类的生命周期
    JAVA代码编程规范
    Jquery实现div局部页面刷新中js渲染失效问题解决
    觅踪17
    第十四周进度
  • 原文地址:https://www.cnblogs.com/fuzhongfaya/p/8953352.html
Copyright © 2011-2022 走看看