HADOOP安装指南-Ubuntu15.10和hadoop2.7.2

Ubuntu15.10中安装hadoop2.7.2安装手册html

太初java

目录node

1.      Hadoop单点模式... 2linux

1.1        安装步骤... 2web

0.环境和版本... 2正则表达式

1.在ubuntu中建立hadoop用户... 2shell

2.安装ssh. 3apache

3.安装java环境... 3ubuntu

4.安装hadoop. 4vim

5.测试... 5

2.      Hadoop伪分布式... 5

2.1        安装步骤... 5

0.环境和版本... 6

1.      配置core-site.xml文件... 6

2.      配置hdfs-site.xml文件... 6

3.      格式化namenode. 7

4.      启动HADOOP. 7

5.      JPS命令验证HADOOP进程... 8

6.      WEB界面查HDFS信息... 8

7.      经过命令操做HDFS文件系统... 9

8.      测试... 9

3.      Hadoop伪分布式(+YARN)... 10

3.1        安装步骤... 10

4.      Hadoop集群... 12

4.1        安装步骤... 12

5.      其余补充... 18

6.1        LINUX经验... 18

6.1.1         开启bash的自动完成功能... 18

6.1.2         开启ubuntu虚拟机和win10宿主机的vmware tool(共享文件)... 18

6.1.3         Ubuntu的Terminal快捷方式... 19

6.1.4         Find命令举例... 19

6.1.5         PATH变量简述... 19

6.1.6         Ubuntu中安装vmware tools. 19

6.2        杂... 19

6.2.1         如何保存被禁止拷贝或存盘的HTML?... 19

6.      资料... 20

 

 

 

 

特别说明:

本文档是笔者研究了大量网络资料,而后本身实践成功后,汇总各方资料的结果。总结和分享的目的只有一个,让其余学友能少走弯路,集中精力解决业务问题,而不是环境搭建问题。在本文中引用了不少网络资料,图片,名称,信息等内容,若是涉及版权问题,请原做者及时联系并告知。谢谢。

       “资料”章节收纳了本文用到后未用到的资源和链接,用于分享。

        因能力所限,错漏之处敬请见谅。

 感谢网络各位大神的信息分享,是大家的努力推进者技术的发展!

[Spark安装运行手册随后贴上,谢谢!]

 

1.   Hadoop单点模式

1.1   安装步骤

0.环境和版本

ubuntu 15.10

jdk 1.8.84

hadoop 2.7.2

1.在ubuntu中建立hadoop用户

(备注:在GUI(图形)界面中可用“ctrl+Alt+T”快捷键打开Terminal(终端窗口),并输入下列命令。)

在Ubuntu终端窗口中,复制粘贴的快捷键须要加上 shift,粘贴是 ctrl+shift+v;拷贝是ctrl+shift+c;等等)

$ sudo useradd -m hadoop -s /bin/bash //新建hadoop用户

$ sudo passwd hadoop //修改密码为hadoop,等于帐号,方便操做;

$ sudo adduser hadoop sudo //为hadoop增长管理员的权限,以避免以后出现权限问题。

(备注:也可打开sudoers文件,给hadoop用户赋予和root同样的权限:$sudo gedit /etc/sudoers  ;而后编辑增添以下那句hadoop   ALL(ALL:ALL)  ALL

【重要】GUI中注销当前帐户(root或Ubuntu安装初始用户,我这里是ya),并随后用hadoop再次登录。

(可选:$sudo apt-get update //由于会用apt按照其余软件,若是未更新apt,有可能没法安装其余软件,可选!)

若出现以下 “Hash校验和不符” 的提示,可经过更改软件源来解决。若没有该问题,则不须要更改。

解决办法:【系统设置】(齿轮图标),选择【软件和更新】,点击 “下载自” 右侧的方框,选择【其余节点】,选择服务器,在列表中选中【mirrors.aliyun.com】,并点击右下角的【选择服务器】,会要求输入用户密码,输入便可。点击关闭后,此时会提示列表信息过期,点击【从新载入】,耐心等待更新缓存。完成会自动关闭【软件和更新】这个窗口。再尝试按照apt。若是仍是提示错误,请选择其余服务器节点如 mirrors.163.com再尝试。更新成功后,再次执行 sudo apt-get update 就正常了。

 

2.安装ssh

$sudo apt-get install openssh-server //在Terminal中容许命令,下同

(备注:用yes来continue继续安装,通常install安装包默认都选y或yes就可)

(备注:Ubuntu 默认已安装了 SSH client,此外还须要安装 SSH server

$sudo /etc/init.d/ssh start //安装好ssh服务后就打开它(还没有放入自启动!)

$ ps -e | grep ssh  //查看ssh服务是否正确启动

$ ssh-keygen -t rsa -P ""   //设置免密码登陆,【在输入路径那儿直接回车!】

(备注:原理多是设定空字符串为基础来生成的密钥对!)

(备注:在/home/hadoop/.ssh里面生成两个文件 id_rsa、id_rsa.pub,前者是私钥,后者是公钥)

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  //将公钥追加到authorized_keys里面

(备注:它保存全部容许以当前用户身份登陆到ssh客户端用户的公钥内容;“~”波折号表明用户主文件夹;)

$ssh hadoop@localhost //登陆ssh(其余linux的Terminal重也可尝试如此操做:ssh hadoop@(IP|HOSTNAME);

(备注:第一次须要输入yes,确认初次登陆,后续不用。)

$exit //退出ssh

(备注:userA@linuxPC1经过ssh登陆了userB@linuxPC2,那么就登陆uesrA得到了userB的权限,并等价于userB经过Terminal在linuxPC2上执行命令,此为ssh方便功能之一)

 

3.安装java环境

下载jdk二进制编译包

下载用wget软件,wget软件在ubuntu下的安装命令以下:

sudo apt-get install wget  //按照wget程序,可直接经过“wget url连接 -o 输出文件名”来下载“*.tar.gz”。

(备注:举例用wget下载jdk包的命令格式为:wget http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.tar.gz?AuthParam=1437810421_1d235bda6e9428e1caa05d0fd7951c6d -o jdk-x64.tar.gz

(备注:建议直接在百度搜索“oracle JDK download”找到合适OS/64/32的JDK并直接经过浏览器下载到Ubuntu,再进行以下操做更放心!)

(备注:在Ubuntu的GUI中经过firefox下载JDK,默认保存路径在“/home/hadoop/下载”中,path含有中文,若是Ubuntu配置了“双拼/拼音”输入法,则能够在Terminal下使用中文!)

 

$sudo cp jdk-x64.tar.gz /usr/local/   //因hadoop权限不够,用sudo拷贝JDK到合适目录

$cd /usr/local/    //进入JDK包所在目录

$sudo tar xzvf jdk-x64.tar.gz  //sudo来释放JDK

(备注:本人下载是当时最新的JDK1.8.0_74,故在/usr/local/目录下解压生成的jdk目录是/usr/local/jdk1.8.0_74

 

$sudo apt-get install vim  //Ubuntu15.10下默认vim下载但未安装,请下载安装,确保vim可用;

$sudo vim /etc/profile    //配置以下JDK相关路径到profile

(备注:这几行配置应该加载到/etc/profile文件的“if [ -d /etc/profile.d ]; then”这一章节中,“done”行以后,“unset i行以前!另外,linux配置等号两边不能空格!)

export JAVA_HOME=/usr/local/jdk1.8.0_74

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

(备注:vim打开文本文件后,提示符默认在左上角且为命令模式,请立刻输入“i”则进入“插入”模式;则可上下左右移动提示符并修改文本;

 完成后立刻用esc退出插入模式;随后用“shift+冒号”进入底部命令行模式,用wq命令保存并退出,q直接退出(若是未作任何修改);若是修改

 则没法q,而必须用q!来强制直接退出(不保存);其余请详查web资料;)

 

$source /etc/profile    //使修改的profile当即生效

$java –version   //测试jdk是否安装成功;能正确显示JDK版本的就算安装成功;

 

 

4.安装hadoop

$sudo cp hadoop-2.7.2.tar.gz /usr/local/     //从hadoop官网下载最新hadoop包,好比2.7.2并拷贝到目的目录

$cd /usr/local

$sudo tar xzvf hadoop-2.7.2.tar.gz  //解压;只能下载tar.gz给Ubuntu用;rpm格式是redhat专用

$sudo mv hadoop-2.7.2 hadoop   //更名为hadoop方便后续操做

$sudo chown hadoop:hadoop -R -f /usr/local/hadoop/   //修改目录主人

$sudo vim /etc/profile   //vim可用后,再次编辑profile,添加配置;

 

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

 

$ /usr/local/hadoop/bin/hadoop version //查看hadoop的版本及校验和等信息!

 

(备注: 若是安装了vmware tool并启用了共享目录,则能够从宿主PC拷贝文本和文件到虚拟机中;或经过teamviewer等软件拷贝文本和晚间!)

 

特别说明:校验MD5

$cat ~/下载/hadoop-2.7.2.tar.gz.mds | grep 'MD5'  //可列出md5检验值

$head -n 6 ~/下载/hadoop-2.7.2.tar.gz.mds   //也可列出2.7.2校验值

md5sum ~/下载/hadoop-2.7.2.tar.gz | tr "a-z" "A-Z"   //可根据二进制包来计算md5值并转为大写方便比较;

若文件不完整则这两个值通常差异很大,可简单对比前几个字符和后几个字符便可。

 

补充:

Ubuntu15.10包含:md5sum,sha1sum,sha256sum等命令,经过man来查他们用法,既能够生成一个二进制文件的校验和,也能够验证校验和是否正确要求校验和关联的二进制文件放在同一个目录)。

好比校验hadoop文件可用命令: sha256sum  --check  hadoop-2.7.2-tar.gz.mds  (若是它是正确的SHA256格式,sha256sum会找到它内部指向的原始二进制文件,好比hadoop-2.7.2-tar.gz,并为它生成临时的SHA256来比较是否一致!)

目前看hadoop上下载的2.7.2二进制安装包是好的,但它的SHA256文件是不可视的乱码文件(非ANSI或UTF-8,也许是Unicode),因此可能以上命令及用法及猜测都是有问题的,毕竟hadoop网站不会错!

 

5.测试

进入 hadoop目录:

$cd /usr/local/hadoop  //进入hadoop目录

$mkdir ./input    //example WordCount不会自动创建input目录,因此须要手动创建;

$cp *.txt ./input/    //拷贝若干文本文件到input让WordCount程序能够统计词频;

$rm -f -r /usr/local/hadoop/output/

     //WordCount程序不会自动删除output,每次启动若是没有手动删除output就出错!

$./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output   //wordcountl例子,统计input目录下全部文件可读词汇的词频并写入output中

$cat ./output/*          //查看运行结果

 

$./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep ./input ./output 'dfs[a-z.]+' // grep 例子,将 input 文件夹中的全部文件做为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中

$cat ./output/*          //查看运行结果

 

$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar //查看更多Hadoop 附带的例子说明,包括 wordcount、terasort、join、grep 等。

 

 

(备注:运行官方测试样例如上;遇到问题请添加input目录,删除output目录;结果在output\part-r-00000中;)

(备注:特别注意,若是经过VMware的共享目录,放了一些window的文本文件到hadoop的input目录,由于“文件结果linux和win不一样”则hadoop会报错,但初看仍然会继续执行获得结果!)

 

#####至此,单点hadop的安装和demo测试完成!(不含hdfs/yarn伪分布式安装内容) #####

 

2.   Hadoop伪分布式

伪分布式模式是基于单机模式顺利安装测试经过后的进阶尝试;

其使用的软件版本和环境都和单机模式没有区别,仅是经过新增配置来使伪分布模式起效并取代单机模式的运行;

后面有关于模式之间切换的介绍;

2.1   安装步骤

0.环境和版本

(彻底和单机模式一致)

ubuntu 15.10

jdk 1.8.84

hadoop 2.7.2

1.    配置core-site.xml文件

(说明:Hadoop 能够在单节点上以伪分布式的方式运行;Hadoop 进程以分离的 Java 进程来运行,节点既做为 NameNode 也做为 DataNode,同时,读取的是 HDFS 中的文件,而再也不是Ubuntu操做系统的ext4下面的文件;)

 

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/中,伪分布式须要修改2个配置文件 core-site.xml 和 hdfs-site.xml。配置文件是 xml 格式,每一个配置以声明 property 的 name 和 value 的方式来实现。修改配置文件 core-site.xml原来内容为空的标签“<configuration></configuration>”

(备注:由于是XML文件,不是普通INI/CONF/TXT等配置文件,因此不能够用#井号作备注,应该用<!—XXX -->来添加注释!)

修改成下面配置:

<configuration>

        <property>

             <name>hadoop.tmp.dir</name>

             <value>file:/usr/local/hadoop/tmp</value>

             <description>Abase for other temporary directories.</description>

        </property>

        <property>

             <name>fs.defaultFS</name>

             <value>hdfs://localhost:9000</value>

        </property>

</configuration>

 

 

2.    配置hdfs-site.xml文件

一样修改配置文件 hdfs-site.xml:

<configuration>

        <property>

             <name>dfs.replication</name>

             <value>1</value>

        </property>

        <property>

             <name>dfs.namenode.name.dir</name>

             <value>file:/usr/local/hadoop/tmp/dfs/name</value>

        </property>

        <property>

             <name>dfs.datanode.data.dir</name>

             <value>file:/usr/local/hadoop/tmp/dfs/data</value>

        </property>

</configuration>

XML

 

 

(说明:虽然官方教程只需配置 fs.defaultFS 和 dfs.replication两项就能够运行hadoop,但若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,致使必须从新执行 format 才行。因此咱们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,不然在接下来的步骤中可能会出错。)

 

3.    格式化namenode

./bin/hdfs  namenode –format    //配置完成后,需格式化 NameNode方能使用;

(备注:成功的话,会看到 “successfully formatted” 和 “Exitting with status 0″ 的提示;若为 “Exitting with status 1″ 则是出错。)

 

 

(注意:这一步若提示 Error: JAVA_HOME is not set and could not be found. 的错误,则须要在文件 ./etc/hadoop/hadoop-env.sh 中设置 JAVA_HOME 变量;好比找到“export JAVA_HOME=${JAVA_HOME}”,改成“export JAVA_HOME=/usr/local/jdk1.8.0_74,并从新尝试格式化便可。最好老是添加!

 

4.    启动HADOOP

./sbin/start-dfs.sh    //开启 NameNode 和 DataNode 守护进程

(备注:出现SSH提示,输入yes便可)

 

 

 

注意:启动时可能会出现以下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提示能够忽略,并不会影响正常使用。但最好修复它;

解决方法是编辑hadoop-env.sh, 在最后添加“export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib:$HADOOP_INSTALL/lib/native”

 

 

5.    JPS命令验证HADOOP进程

启动完成后,能够经过命令 jps 来判断是否成功启动,若成功启动则会列出以下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”;JPS命令之后会屡次用于yarn和真实分布式模式中;

 

Jps  //经过jps查看启动的Hadoop进程

 

 

错误1:若是 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,而后再次尝试启动尝试

错误2:若是没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查以前步骤,经过查看启动日志排查缘由。

错误3:若是DataNode没启动,通常状况下,可尝试以下方法恢复。但这会删除 HDFS中原有数据,请谨慎!):

./sbin/stop-dfs.sh   //关闭hadoop(hdfs)

rm -r ./tmp  //删除 tmp 文件,这会删除 HDFS 中原有的全部数据

./bin/hdfs namenode -format  //从新格式化 NameNode

./sbin/start-dfs.sh  //重启

 

排错方法:可查启动日志来排查缘由,注意几点:

启动时会提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 对应你的机器名,但其实启动日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,因此应该查看这个后缀为 .log 的文件;启动日志都是追加的,拉到最后查看最新内容,log每行有时间信息。出错一般写着 Fatal、Error、Warning 或者 Java Exception 的地方。可在网上搜索出错信息,找到相关解决方法。

 

6.    WEB界面查HDFS信息

http://localhost:50070/;当成功启动后,能够访问 Web 界面来查看 NameNode 和 Datanode 信息,还可在线查看 HDFS 中的文件。在“Utilities”菜单下“Browse the file system”中可看到在hdfs上创建的目录“/user/hadoop”等,而在ubuntu的文件系统ext4上看不到!

 

 

7.    经过命令操做HDFS文件系统

单机模式下运行“grep/WordCount”等例子读取的是Ubuntu的ext4中的本地数据,而伪分布式读取的则是 HDFS 上的数据。为了使用 HDFS,须要在 HDFS 中建立用户目录,增删改查文件和目录。

./bin/hdfs dfs -mkdir -p /user/hadoop  //在HDFS建立hadoop用户

./bin/hdfs dfs -mkdir input      //新建hadoop用户后自动转到其目录下,如今新建input目录,在hadoop目录下

./bin/hdfs dfs -put ./etc/hadoop/*.xml input   //将Ubuntu的ext4目录下的xml文件拷贝到hdsf的hadoop\input目录下;

./bin/hdfs dfs -ls input     //复制完成后,查看文件列表;

 

(说明:伪分布式模式运行的MapReduce 做业的方式跟单机模式相同,但区别在于伪分布式读取的是HDFS中的文件,而不是Ubuntu的ext4下的output和input目录;能够将单机模式步骤中建立的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

 

8.    测试

执行“grep”example:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

$ ./bin/hdfs dfs -cat  output/*      //查看hdfs上的结果;

执行“wordcount”example:

./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output

(备注:此句和单点运行模式时如出一辙,可是由于hadoop启动为伪分布式,因此从hdfs里的input读数据并写入output中去,不会再访问ubuntu的文件系统ext4了。结果能够经过本机50070的portal登录查看hdfs文件系统的变化,并下载结果到ext4中。)

 

查看运行结果(查看的是位于 HDFS 中的输出结果):

./bin/hdfs dfs -cat output/*

 

 

也可从HDFS取回运行结果到本地ext:

rm -r ./output    # 先删除本地的 output 文件夹(若是存在)

./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机

cat ./output/*

 

(再次运行)Hadoop伪分布式的grep

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

(备注:Hadoop 运行grep或wordcount时,输出目录不可存在,不然会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,需先删除 output 文件夹;在实际开发应用程序时,也可考虑在程序中加上以下代码,能在每次运行时自动删除输出目录,避免繁琐的命令行操做,以下:)

Configuration conf = new Configuration();

Job job = new Job(conf);

 /* 删除输出目录 */

Path outputPath = new Path(args[1]);

outputPath.getFileSystem(conf).delete(outputPath, true);

 

 

关闭 Hadoop:

./sbin/stop-dfs.sh

 

再次启动 hadoop 时,无需进行 NameNode 的初始化,只须要运行 ./sbin/start-dfs.sh 就能够!

 

3.   Hadoop伪分布式(+YARN)

3.1   安装步骤

 

启动YARN

启动 Hadoop 后,没有原来的JobTracker 和 TaskTracker,由于新版Hadoop使用了新的MapReduce V2框架,称为 YARN(Yet Another Resource Negotiator)。YARN 从 MapReduce 中分离出来,负责资源管理与任务调度。

YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性。伪分布式HADOOP能够不安装和启动YARN。

经过 ./sbin/start-dfs.sh启动Hadoop后,仅是启动了供MapReduce使用的HDFS环境,为了启动 YARN来负责资源管理与任务调度。须要修改配置文件 mapred-site.xml:

mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml //先从默认template重命名

用vim编辑以下:

<configuration>

        <property>

             <name>mapreduce.framework.name</name>

             <value>yarn</value>

        </property>

</configuration>

再修改配置文件 yarn-site.xml:

<configuration>

        <property>

             <name>yarn.nodemanager.aux-services</name>

             <value>mapreduce_shuffle</value>

            </property>

</configuration>

./sbin/start-yarn.sh      /YARN(需先启动HDFS/MR)

./sbin/mr-jobhistory-daemon.sh start historyserver  //启动历史服务器,才能在Web中查看任务运行状况;

经过 jps命令查看到(NodeManager,ResourceManager,NameNode,DataNode)进程都启动了;

启动 YARN 以后,运行实例的方法仍是同样,但资源管理方式和任务调度不一样。观察日志信息能够发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 以后,是 “mapred.YARNRunner” 在跑任务。启动 YARN的好处是经过Web界面http://localhost:8088/cluster能够查看任务运行状况:

 

YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。

若是不想启动 YARN,务必把配置文件 mapred-site.xml重命名,好比改回到mapred-site.xml.template,须要用时再改回来。不然该配置文件存在但未开启 YARN的状况下,运行实例程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032″ 的错误,这就是为什么该配置文件初始默认文件名为 mapred-site.xml.template的缘由。

(备注:先关闭yarn再rename它的配置比较好!Ubuntu用mv而不是rename来修改文件名称! Ubuntu下面rename是另外一个较为复杂但强大的正则表达式命令,通常用来批量重命名文件之用)

./sbin/stop-yarn.sh    //关闭YARN

./sbin/mr-jobhistory-daemon.sh stop historyserver    //关闭history服务器,WEB也没了;

 

补充hdfs命令:

hadoop@ya-chy-pc-vm:/usr/local/hadoop$ hadoop fs -ls -R /        列出虚拟hdfs的根目录/下全部文件 –R是递归

hadoop@ya-chy-pc-vm:/usr/local/hadoop$ ./bin/hdfs dfs -mkdir /user/hadoop/output 新建hdfs指定目录(绝对路径)

hadoop@ya-chy-pc-vm:/usr/local/hadoop$ ./bin/hdfs dfs -rm -r /user/hadoop/output 递归删除指定目录

 

 

4.   Hadoop集群

4.1   安装步骤

 

前面已经描述了Hadoop的单点安装,伪分布式安装及YARN的使用,这里再描述集群安装的要点。

咱们基于以前安装的目录假设,仅对有区别的作特别提醒,不然请翻看前面内容。

另外,一些注意点和要点,可能也相似,前面提醒过的,无非重要,再也不提醒,假设读者已经充分熟练掌握前面几种安装状况,并顺利运行。

 

笔者的网络拓扑环境以下:

台式PC(宿主机/AMDK8/8G/win10):192.168.1.X(路由器DHCP动态分配)

台式PC(虚拟机/AMDK8/3G/Ubuntu15.10+虚拟机网络模式为桥接模式):192.168.1.220(master)固定IP

笔记本PC(E5420/i3/2GB/Ubuntu15.10):192.168.1.201(slave1)固定IP

笔记本PC(E5400/双核/2GB/Ubuntu15.10):192.168.1.202(slave2)固定IP

两两都能ping通,能够路由获得彼此,算在一个局域网内。

两两创建SSH后,能够用SCP(以下),将下载好的JDK/HADOOP等拷贝到其余host主机上。(用有线网络所在的HOST下载安装包最快。)

scp hadoop-2.7.2.tar gz hadoop@192.168.1.6:/home/hadoop/  或

scp hadoop-2.7.2.tar gz hadoop@slave1:/home/hadoop/  其余相似

 

主要流程:

  1. 确认Master/Slave/…等集群各主机(host)的功能,弄好它们之间的SSH(配置见后),IP,PING,SCP,JDK;

a)         Hostname建议用经常使用且含有明确的master和slave。

  1. 在 Master 节点配好hadoop 用户,安装Hadoop并配置;

a)         若是安装过单点或伪分布式就已经正确安装了hadoop,只有配置有些变化而已。

3.      在Slave节点配号 hadoop 用户;

4.      将 Master节点上的/usr/local/hadoop目录复制到其余Slave节点上(为了快并保持配置一致,这样比较简单);

5.      在 Master节点上开启Hadoop,就启动了整个Hadoop集群。

 

准备IP和网络

(A)有些家庭电信宽带自带路由器,但它只提供useradmin权限(也许电话服务商能够获取admin权限),这个帐号仅能修改不多配置。却不能绑定MAC地址,设定DHCP的IP超时时间等;因此家中多个设备如手机,PC,笔记本电脑,如但愿保持家庭内网IP不变,只能在设备上设定固定IP;好比在PC或笔记本电脑中设定内网IP,不影响上公网Internet。

(B)若是PC上还有虚拟机(好比笔者WIN10台式PC上安装Ubuntu15.10的虚拟机),但用个免费的VMware player,则此免费版本不支持修改“虚拟网络参数”(好比修改VMNET8的默认192.168.44.XXX虚拟机网段为192.168.1.XXX等等),但收费的VMware workstations版能够。因此由于192.168.1.X和192.168.44.X是2个网段,没法ping通(也许能够经过增长路由等方式解决,备注以下。),不方便。因此将VMware player中虚拟机改成桥接模式,虚拟机和宿主机共享一个网段,因此虚拟机能够配置固定IP192.168.1.220;就能够和家中其余host通信了;

备注: 1.X或44.X两个网段中任何一侧主机都添加手动路由(相似:route add 192.168.44.0 mask 255.255.0.0 192.168.1.199;假设虚拟机宿主PC是固定IP且在1.X网段;由于宿主机安装了VMware player,因此自动具备向两侧网络转发IP包的能力;详见http://www.zhihu.com/question/20231472 此法待验证!),建议用桥接方法,简单方便。

 

任何配置前,建议都先关闭 Hadoop (/usr/local/hadoop/sbin/stop-dfs.sh),再进行后续集群配置。

 

sudo vim /etc/hostname     //修改“hostname=master”,其余slave等集群机器都要修改;注意大小写;

sudo vim /etc/hosts         //修改成以下,其余slave等集群机器都要修改;注意大小写;

“192.168.1.201 slave1”

“192.168.1.202 slave2”

“192.168.1.220 master”

“127.0.0.1 localhost”

 

对master和每一个slave机器都作如上hostname和hosts配置,且重启动(才能体现出hostname)

注意:hosts文件中只有一个 127.0.0.1,对应名为 localhost,有多余应删除,特别不能有 “127.0.0.1 master”等

 

SSH配置

这个和单点相似,只不过要让master能够操控各个slave机器,因此额外作以下操做:

cd ~/.ssh              //若是之前安装hadoop生成过ssh,就会有该目录;

rm ./id_rsa*            //删除OLD公匙(由于hostname变化了)

ssh-keygen -t rsa        //一直按回车就能够(这样就生成了无密码的密钥对)

cat ./id_rsa.pub >> ./authorized_keys    //将公钥id_rsa.pub写入认证文件authorized_keys中

ssh master            //尝试master本机的无密码SSH登录,测试经过就继续后续处理

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/   //将公钥也拷贝到slave1机器上;

 

#如下在slave1机器上执行,其余slave相似

mkdir ~/.ssh        //若是不存在该文件夹需先建立,若已存在则忽略。Slave1若是本身弄过SSH,就会有它。

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys    //将master的公钥加入本地受权文件;

rm ~/id_rsa.pub    //删除master公钥

 

#如下在slave1机器上执行,其余slave相似

ssh slave1     //在master机器上执行,尝试无密码SSH登录slave1,成功后,其余slave都配置好测试完。

 

路径配置

在路径(etc/profile)中增长行“export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin”,若是作过以前的点单等配置,应该已经有了,能够查全部集群的相关配置。并source一下,应用更新。

 

设定集群相关配置文件:

集群/分布式模式须要修改/usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置请查官方说明。这里仅设置为了正常启动所必须的设置项:slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

 

1.文件slaves

该文件记录全部DataNode 的主机名,每行一个hostname字符串,默认为 localhost(伪分布式模式时,slaves文件默认为localhost,则节点即做为NameNode也做为DataNode)。分布式配置能够保留 localhost,也可删掉,让master 节点仅做为 NameNode 使用。

这里请添加以下内容:

“slave1

slave2”

两行,master 节点仅做为NameNode使用,不做为datanode。请将localhost行删除。

 

2文件core-site.xml

 

<configuration>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://Master:9000</value>

        </property>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>file:/usr/local/hadoop/tmp</value>

                <description>Abase for other temporary directories.</description>

        </property>

</configuration>

 

3文件hdfs-site.xml

咱们有slave1和slave2全部dfs.replication填写2,它指定dfs分布式文件系统的replication数目。

<configuration>

        <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>Master:50090</value>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>2/value>

        </property>

        <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:/usr/local/hadoop/tmp/dfs/name</value>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:/usr/local/hadoop/tmp/dfs/data</value>

        </property>

</configuration>

 

4文件mapred-site.xml

默认安装完是mapred-site.xml.template,请重命名。

 

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</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>

备注:注意master大小写最好一致,几个配置文件都要注意。

 

5文件yarn-site.xml

 

<configuration>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>master</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

 

master复制配置到各slave机器

将 master上/usr/local/Hadoop文件夹复制到各个节点上。若是之前有安装配置运行过伪分布式模式,建议在切换到集群模式前备份(或删除)以前的临时文件,以便出现问题。

master 节点上执行

cd /usr/local

sudo rm -r ./hadoop/tmp     //删除无用临时文件

sudo rm -r ./hadoop/logs/*   //删除日志

tar -zcf ~/hadoop.master.tar.gz ./hadoop   //压缩

cd ~

scp ./hadoop.master.tar.gz slave1:/home/hadoop  //从master复制目录压缩包到slave1机器;

slave1 节点上执行

sudo rm -r /usr/local/hadoop    //删掉旧的(或mv备份到好比“Hadoop-standalone”等等)

sudo tar -vzxf ~/hadoop.master.tar.gz -C /usr/local  //解压缩

sudo chown -R hadoop:hadoop /usr/local/hadoop    //变动目录owner权限,让hadoop用户可用此目录

 

一样对其余slave进行处理。

 

首次运行:

 

首次启动须要先在master节点执行NameNode的格式化:

在master节点上运行:

hdfs namenode -format       //首次运行须要执行初始化(一大堆log输出,开启NameNode,格式化并再次关闭)

 

关闭防火墙:

Ubuntu15.10若是是desktop默认配置的防火墙不会影响hadoop各类模式的运行。但若是是server版本,好比centOS这种偏服务器的版本,可能默认/etc/init.d/iptables会启动,能够停掉它,请查相关资料。

 

 

 

启动Hadoop集群:

在 Master 节点上执行:

start-dfs.sh  //通常在/usr/local/hadoop/sbin,下同;

start-yarn.sh

mr-jobhistory-daemon.sh start historyserver

经过命令jps能够查看各个节点所启动的进程。正确的话,在Master节点上能够看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程。在Slave节点能够看到 DataNode 和 NodeManager 进程。缺乏任一进程都表示出错。

还可在Master节点上经过“hdfs dfsadmin –report”查看DataNode是否正常启动,Live datanodes为2(2个slave机器都是datanode),则说明集群启动成功。

 

经过Web查看集群状态:

http://master:50070/ 查看DataNode,NameNode 的状态。若是不成功,经过启动日志排错。Log4j应该配置好(前面有详述,不在累赘)。

 

运行分布式集群的例子:

方法和伪分布式同样(伪分布式就是为了让你联系分布式的,因此理应差异不大)。

hdfs dfs -mkdir -p /user/hadoop           //首先建立HDFS上的用户目录

hdfs dfs -mkdir input              //为hdfs分布式系统创建input目录

hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input    //从Ubuntu本地ext4文件系统拷贝文件到hdfs

http://localhost:50070/      //web查看DataNode的状态(占用大小会改变),文件确实复制到了DataNode中

 

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'    //运行MapReduce做业

说明:上述命令hadoop位于/usr/local/hadoop/bin/hadoop,由于设定过PATH,因此能够直接执行;运行时的输出信息与伪分布式相似,会显示Job 的进度。可能会有点慢,但若是迟迟没有进度,好比 5 分钟都没看到进度,那不妨重启 Hadoop 再试试。若重启还不行,则颇有多是内存不足引发,建议增大虚拟机的内存,或者经过更改 YARN 的内存配置解决。

 

查看job运行状况:

经过Web界面查看JOB进度http://master:8088/cluster ,点击 “Tracking UI”这列的 History 链接,可看任务运行信息。

 

关闭集群:

stop-yarn.sh    //在master节点上关闭yarn

stop-dfs.sh     //再master节点上关闭hdfs分布式文件系统

mr-jobhistory-daemon.sh stop historyserver          //在master上关闭跟踪信息

备注:你一样也能够和伪分布式相似而选择不启动YARN,但除了不start-yarn.sh以外,要记得改掉mapred-site.xml 的文件名,好比将它mv为原来的mapred-site.xml.template。

 

至此,基本上分布式hadoop集群最基本的搭建运行和启停都算弄了一下。还有大量的配置和调优工做须要研究。

提醒:千万不要为了调优和调优,分布式计算系统(包括之后将介绍的SPARK)主要是为了解决问题,先跑通解决问题是一个领域或维度;而调优并让问题解决的更漂亮是另一个维度和领域,二者并没有必然的联系;建议仍是先用上分布式(hadoopspark),再考虑必定数据量和计算量状况下的调优。这是两个工种,如同研发工程师和产业化工程师的区别

 

 

Hadoop各类模式切换及说明:

 

1伪分布式安装的说明:

请参考相关文档,配置起效hdfs,则input和output目录都放到hdfs中,实现正在的基于hdfs高层文件格式之上的分布式;但由于实在一台PC或虚拟机的Ubuntu上操做,因此叫伪分布式,任务并未分发给不一样的PC节点!

2伪分布式安装的yarn说明:

伪分布式容许可单独靠hadoop;也可升级安装yarn来支持hadoop,则有更方便查看的web界面来观察yarn的分布式容许;

3分布式安装说明:

请虚拟或实际配置至少2或多个PC节点,来测试真实分布式hadoop系统;配置和容许和伪分布式差很少,只是多了ssh/SCP/HOSTNAME配置等内容,原理相似;

4单点和伪分布式切换:

  备份并确保文件(mapred-site.xml.template)不存在;备份并确保文件(core-site.xml)为初始状态,就是“configuration标签内部是空的!”;则能够按照单点模型运行mapreduce的WordCount例子,并在单点所在的ext4的Ubuntu系统内发现output文件输出(而不会输出到hdfs上);

5伪分布式是否启动YARN

  按正常命令关闭YARN;备份并确保文件(mapred-site.xml.template)不存在;则会运行不带YARN的伪分布式模式,不然即便不启动yarn,run的时候也会出错!

6伪分布式和分布式切换:

二者无本质区别,只是将namenode,datanode,hdfs,各种manager等网元配置分不到不一样的PC上而已;其实“伪分布式模型”等价于启动hadoop+hdfs+yarn的最小网元集合,而网元们都指向或曰安装在同一个PC上。

1.      从分布式切换到伪分布式时,不要忘记修改 slaves 配置文件;

2.      在二者之间切换时,若遇到没法正常启动的状况,能够删除所涉及节点的临时文件夹,这样虽然以前的数据会被删掉,但能保证集群正确启动。因此若是集群之前能启动,但后来启动不了,特别是 DataNode 没法启动,不妨试着删除全部节点(包括 Slave 节点)上的 /usr/local/hadoop/tmp 文件夹,再从新执行一次 hdfs namenode -format,再次启动试试。

 

 

 

5.   其余补充

6.1   LINUX经验

6.1.1      开启bash的自动完成功能

$sudo vim /etc/bash.bashrc   //修改此文件;按需输入密码

 

找到文件中的以下脚本片断,去掉本小节第一行外的全部前导#号;

这就开启了目录/文件自动补全和完成的智能功能,大大提高terminal中bash命令的运行效率。

 

#enable bash completion in interactive shells

#if ! shopt -oq posix; then

#      if [-f  /usr/share/bash-completion/bash_completion ]; then

#          . /usr/share/bash-completion/bash_completion

#      elif [ -f /etc/bash_completion]; then

#           . /etc/bash_completion

#      fi

#fi

 

6.1.2      开启ubuntu虚拟机和win10宿主机的vmware tool(共享文件)

若是不是真实PC,而是用虚拟机且是VMware,那么能够安装VMware tool,并使用共享目录,在宿主机和虚拟机上传递文件,拷贝文字等;

网络链接:http://blog.csdn.net/zybasjj/article/details/7401808 (VMware虚拟机安装Ubuntu使用share folders共享windows目录的方法)

 

步骤:

1.关闭ubuntu虚拟机后,在虚拟机配置中设定CD/DVD-ROM指向vmware安装目录下的”linux.iso”(若是是win虚拟机则指向windows.iso);

2.启动ubuntu虚拟机发现taskbar上有VMware Tools的光盘图标;双击查看;

3.发现多个文件,好比:manifest.txt和 VMwareTools-10.0.5-3228253.tar.gz等,将套们都拷贝到 /tmp 下;

4.进入cd /tmp;并解压缩tar zxvf VMwareTools-8.4.5-324285.tar.gz;

5.进入cd vmware-tools-distrib(进入解压后对应文件夹);

6.sudo ./vmware-install.pl 命令来安装VMware tool;会提示输入登录用户的密码;而后有不断的提示,主要都按回车,最后会出现: Enjoy,   --the VMware team,就算按照完毕!

7.在宿主机(好比win10)上对vmware中的ubuntu虚拟机的配置中“共享目录”进行设定,通常不勾选只读;进入ubuntu虚拟机后会在 /mnt/hgfs/xxx 下发现win10上的文件了!(xxx就是win10宿主机上设定的共享目录)

8.注意win和linux的文件结尾不一样,尤为是带回车换行的文本文件等;二进制文件可能好点;

 

6.1.3      Ubuntu的Terminal快捷方式

Ubuntu下Ctrl+Alt+T调用出Terminal界面。

6.1.4      Find命令举例

sudo find / -name 'mapred-site.xml' //在根目录查找此文件名的文件

6.1.5      PATH变量简述

 

可执行 echo $PATH(或export $PATH,看用的什么shell环境了) 查看它是包含了不少目录的字符串。例如咱们在主文件夹 ~ 中执行 ls 这个命令时,实际执行的是 /bin/ls 这个程序,而不是 ~/ls 这个程序。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。

咱们通常先进入/usr/local/hadoop 目录中,再执行 sbin/hadoop,实际上等同于运行 /usr/local/hadoop/sbin/hadoop。咱们能够将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就能够直接经过 start-dfs.sh 开启 Hadoop,也能够直接经过 hdfs 访问 HDFS 的内容,方便平时的操做。

咱们若是在 ~/.bashrc 中设置PATH,好比“export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin”,并用source ~/.bashrc使设置生效;以后在任意目录中,均可以直接使用 hdfs 等命令。比较方便。

 

6.1.6      Ubuntu中安装vmware tools

若是要升级或安装,能够经过$sudo apt-get install open-vm-tools 来安装和升级;

也能够从网络下载“linux.iso”的vmware tools的镜像光盘,放入虚拟机的DVD/CDROM中,启动后多出一个盘,位于“/media/username/VMware tool/”目录中,而后将“VMwareTools-10.0.0-2977863.tar.gz”文件拷贝到好比/tmp目录,解压并运行“./install.pl”就能安装了。

别忘记启动虚拟机配置中设定外界的宿主系统(好比WIN10)的一个目录(好比叫sharedfolder)为共享目录,进入虚拟机后,自动mount挂在到“/mnt/hgfs/sharedfolder”这样能够共享文件了。

 

6.2   杂

6.2.1      如何保存被禁止拷贝或存盘的HTML?

当html或mht等页面禁止保存或拷贝内容的时候,能够查看源码并保存为html后缀文件。

而后本地打开拷贝黏贴其内容。

若是是zh-cn而非通用的3字节utf-8编码,则能够用诸如notepad++等软件打开html并转换为utf8,保存再次打开,就能拷贝黏贴了。

 

 

6.   资料

本文内容是笔者从网络资料中收集,整理,实践,修订,备注而成。

一为整理学习,方便之后查阅参考;

二为方便他人学习交流之用;

如下罗列资料只有部分研究过,仅供参考,并没有倾向性推荐。

 

 

感谢开放的网络。感谢网络上各位的分享!

ubuntu15.04安裝hadoop2.6.0及eclipse开发环境配置:http://www.linuxdiyf.com/linux/12474.html

Ubuntu15.04单机/伪分布式安装配置Hadoop与Hive试验机:http://www.linuxdiyf.com/linux/11858.html

Ubuntu下安装Hadoop(单机版):http://www.linuxdiyf.com/linux/11372.html

 

http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

http://www.micmiu.com/bigdata/hadoop/hadoop-2x-ubuntu-build/

http://www.powerxing.com/install-hadoop/ 笔记Hadoop

 

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS

使用命令行编译打包运行本身的MapReduce程序 Hadoop2.6.0

使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS

Hadoop-in-Practice第四章MapReduce-Join代码运行问题

Hadoop安装配置简略教程

Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0

 

大数据教材推荐

林子雨老师(研究生导师)编著的《大数据技术原理与应用》,该教程是针对高校学生打造的入门级教材,目前已被多所高校做为大数据课程指定教材。

林子雨编著《大数据技术原理与应用》官网

林子雨主讲入门级大数据在线课程(视频)

《大数据技术原理与应用》教材配套学习指南

《大数据技术原理与应用》教材配套上机练习题目

相关文章
相关标签/搜索