Code Monkey home page Code Monkey logo

hadoop_in_linux's People

Contributors

pyhblacksky avatar

Watchers

 avatar

hadoop_in_linux's Issues

Hadoop初探_在linux下的安装与使用(1)

目的

在linux环境下,设置Hadoop单节点的安装,以便使用HDFS快速执行简单操作。

前提准备

在linux环境下确保已经有以下环境:

  1. Java相关、jdk
    Java下载网站
    对Java环境进行配置,参考步骤
    $ vi /etc/profile
    新增:
    export JAVA_HOME=/opt/jdk1.8.0_121
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

$ source /etc/profile
使修改生效

2.安装ssh,必须运行sshd才能远程运行

3.一些linux下的必要命令

$ sudo apt-get install ssh
$ sudo apt-get install rsync

4.使用wget下载hadoop
http://www.apache.org/dyn/closer.cgi/hadoop/common/

准备使用Hadoop Cluster

在Hadoop解压的目录中,使用vi编辑目录下的 etc/hadoop/hadoop-env.sh 文档,加入以下内容

 # set to the root of your Java installation
  export JAVA_HOME=/usr/java/jdk_version

在Hadoop目录下,使用
$ ./hadoop
进行测试是否成功

将hadoop下相应命令设置添加到PATH中

$ vi /etc/profile
在profile中加入以下内容

# set hadoop environment
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin

使用$ source /etc/profile 使其生效
使用$ hadoop,无错即成功

Hadoop初探_在linux下的安装与使用(2)——三种运行模式

英文原版详见这里,这里是自己操作中的理解

1.单机模式(Standalone Operation)

默认情况下,Hadoop被配置为以非分布模式运行,作为单个Java进程。 这对调试很有用。

以下示例将解压后的conf目录复制为输入,然后查找并显示给定正则表达式的每个匹配项。 输出写入给定的输出目录。

在 /usr/hadoop/ 目录下创建input,然后拷贝相应文件

$ mkdir input
$ cp /hadoop-3.1.0/etc/hadoop/*.xml input
$ hadoop jar /usr/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep input output 'dfs[a-z.]+'

在 /usr/hadoop/ 目录下会自动生成output文件夹
注意:执行 hadoop jar ... 这段代码时,回退到/usr/hadoop/ 目录执行

2.伪分布模式(Pseudo-Distributed Operation)

Hadoop也可以在伪分布模式下的单节点上运行,其中每个Hadoop守护进程都在单独的Java进程中运行。

组态设置:
在 /usr/hadoop/hadoop-3.1.0/etc/hadoop 目录下使用vi编辑 core-site.xml 文件
原版:

<configuration>
</configuration>

修改为:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/hadoop/data</value>
    </property>
</configuration>

fs.defaultFS参数配置的是HDFS的地址。
hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下

编辑 hdfs-site.xml 文件
原版:

<configuration>

</configuration>

修改为:

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

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1

执行操作

1.格式化HDFS文件系统
$ hdfs namenode -format

格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。

格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/usr/hadoop/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。

注意:(无问题可以忽略)
格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/usr/hadoop/data的所有者改为hadoop。
$ sudo chown -R hadoop:hadoop /usr/hadoop/data

查看NameNode格式化后的目录。

2.启动NameNode和DataNode

$ cd /usr/hadoop/hadoop-3.1.0/sbin
$ ./start-dfs.sh

或者使用以下命令:

$ cd /usr/hadoop/hadoop-3.1.0/sbin
$ ./hadoop-daemon.sh start datanode
$ ./hadoop-daemon.sh start namenode

出现以下错误的相关处理:
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [bogon]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

处理1(HDFS)

$ vi sbin/start-dfs.sh
$ vi sbin/stop-dfs.sh 

两处增加以下内容

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root 

处理2(YARN)

$ vi sbin/start-yarn.sh
$ vi sbin/stop-yarn.sh 

两处增加以下内容

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

hadoop进程日志输出被写入到$ HADOOP_LOG_DIR目录(默认为$ HADOOP_HOME / logs)。

使用$ jps命令查看是否已经启动成功,有结果就是启动成功了。
例如

$ jps
28021 DataNode
28043 Jps
27471 NameNode

*( 不重要)3.可以浏览NameNode的Web界面; 默认情况下它位于:
NameNode - http://localhost:50070/

4.创建执行MapReduce所需的HDFS目录:

$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/<username>

本例中 执行 $ hdfs dfs -mkdir /demo1
上传本地文件到HDFS上
$ hdfs dfs -put /usr/hadoop/bigdata_homework/100KWikiText.txt /demo1
说明:上传的文件,上传文件命名

读取HDFS上的文件内容
$ hdfs dfs -cat /demo1

从HDFS上下载文件到本地:
$ hdfs dfs -get /demo1

配置、启动YARN *(未实际验证)
另外,您可以通过设置几个参数并运行ResourceManager进程和NodeManager进程,以伪分布模式在YARN上运行MapReduce作业。
以下说明假定已经执行了上述指令的1〜4个步骤。
1.配置参数如下:
$ vi /usr/hadoop/hadoop-3.1.0/etc/hadoop/mapred-site.xml

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

$ vi /usr/hadoop/hadoop-3.1.0/etc/hadoop/yarn-site.xml

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

2.启动ResourceManager和NodeManager:

$ cd /usr/hadoop/hadoop-3.1.0/sbin/
$ ./start-yarn.sh

3.浏览ResourceManager的Web界面
默认情况下为:ResourceManager - http://localhost:8088/
4.运行MapReduce作业
5.运行完后停止

$ cd /usr/hadoop/hadoop-3.1.0/sbin/
$ ./stop-yarn.sh

三. 完全分布式模式(Fully-Distributed Operation)

详情参考英文文献,这里

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.