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安装运行手册随后贴上,谢谢!]
ubuntu 15.10
jdk 1.8.84
hadoop 2.7.2
(备注:在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 就正常了。 |
$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方便功能之一)
下载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版本的就算安装成功;
$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网站不会错! |
进入 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伪分布式安装内容) #####
伪分布式模式是基于单机模式顺利安装测试经过后的进阶尝试;
其使用的软件版本和环境都和单机模式没有区别,仅是经过新增配置来使伪分布模式起效并取代单机模式的运行;
后面有关于模式之间切换的介绍;
(彻底和单机模式一致)
ubuntu 15.10
jdk 1.8.84
hadoop 2.7.2
(说明: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>
|
一样修改配置文件 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,不然在接下来的步骤中可能会出错。)
./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”,并从新尝试格式化便可。最好老是添加!)
./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”
|
启动完成后,能够经过命令 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 的地方。可在网上搜索出错信息,找到相关解决方法。
http://localhost:50070/;当成功启动后,能够访问 Web 界面来查看 NameNode 和 Datanode 信息,还可在线查看 HDFS 中的文件。在“Utilities”菜单下“Browse the file system”中可看到在hdfs上创建的目录“/user/hadoop”等,而在ubuntu的文件系统ext4上看不到!
|
单机模式下运行“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 文件夹都删掉来验证这一点)。
执行“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 就能够!
启动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 递归删除指定目录
|
前面已经描述了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/ 其余相似
主要流程:
a) Hostname建议用经常使用且含有明确的master和slave。
a) 若是安装过单点或伪分布式就已经正确安装了hadoop,只有配置有些变化而已。 3. 在Slave节点配号 hadoop 用户; 4. 将 Master节点上的/usr/local/hadoop目录复制到其余Slave节点上(为了快并保持配置一致,这样比较简单); 5. 在 Master节点上开启Hadoop,就启动了整个Hadoop集群。
准备IP和网络
任何配置前,建议都先关闭 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)主要是为了解决问题,先跑通解决问题是一个领域或维度;而调优并让问题解决的更漂亮是另一个维度和领域,二者并没有必然的联系;建议仍是先用上分布式(hadoop和spark),再考虑必定数据量和计算量状况下的调优。这是两个工种,如同研发工程师和产业化工程师的区别。
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,再次启动试试。
|
$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
若是不是真实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的文件结尾不一样,尤为是带回车换行的文本文件等;二进制文件可能好点;
Ubuntu下Ctrl+Alt+T调用出Terminal界面。
sudo find / -name 'mapred-site.xml' //在根目录查找此文件名的文件
可执行 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 等命令。比较方便。
若是要升级或安装,能够经过$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”这样能够共享文件了。
当html或mht等页面禁止保存或拷贝内容的时候,能够查看源码并保存为html后缀文件。
而后本地打开拷贝黏贴其内容。
若是是zh-cn而非通用的3字节utf-8编码,则能够用诸如notepad++等软件打开html并转换为utf8,保存再次打开,就能拷贝黏贴了。
本文内容是笔者从网络资料中收集,整理,实践,修订,备注而成。
一为整理学习,方便之后查阅参考;
二为方便他人学习交流之用;
如下罗列资料只有部分研究过,仅供参考,并没有倾向性推荐。
感谢开放的网络。感谢网络上各位的分享!
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安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
大数据教材推荐
林子雨老师(研究生导师)编著的《大数据技术原理与应用》,该教程是针对高校学生打造的入门级教材,目前已被多所高校做为大数据课程指定教材。
林子雨主讲入门级大数据在线课程(视频)