搭建Hadoop平台(新手入门)

编制主机名

Ubuntu 10.04

Ubuntu版本过一直,需要安排将package
sources指于旧repository。才能够sudo apt-get update

sudo sed -i ‘s/archive.ubuntu/old-releases.ubuntu/’
/etc/apt/sources.list

#reference
#reference-linux
sed命令详解
#reference-http://mirrors.tencentyun.com/ubuntu
#reference-How to install software or upgrade from an old unsupported
release?
为此类推,如果默认镜像下了其他源如拖欠服务又挂了,也需改。(以腾讯云为例)

sudo sed -i ‘s/mirrors.tencentyun/old-releases.ubuntu/’
/etc/apt/sources.list

#reference-ubuntu14.04
腾讯云的根源不可用,如何设置软件

然后拿公钥发于远程机器,比如hadoop01向hadoop02发送

方式

  • 阅读用Python实现的MapReduce代码
  • 在VPS搭建伪分布式的单节点集群
  • 在VPS搭建分布式的多节点集群

  • [x] #Hadoop in
    python
  • [x]
    #伪分布式单机集群
  • [ ]
    #分布式的大都节点集群

4.部署好节点登录的未密码登录

.sh文件执行debug

bash -x <.sh地址>
#reference

初始化hadoop需要授权为hduser
chown命令很有因此
mkdir -p用于创造文件夹

Starting your single-node
cluster的早晚会赶上莫名其妙的报错现实java初始化虚拟机失败。

localhost: Could not create the Java virtual machine.
localhost: Error occurred during initialization of VM
localhost: Could not reserve enough space for object heap
localhost: Could not create the Java virtual machine

google回来的缓解方案还是java set heap 或者 32/64各项冲突。
变动了32/64各系统以及 java -Xmx64m 后无效。
结合个人的突出情形(vps
128m),检查hadoop配置/usr/local/hadoop/conf/hadoop-env.sh尝试设置export HADOOP_HEAPSIZE=4生效。(64要么128都不算,因为虚拟机分配不了这么多)
默认为1g.

root password 和 hduser password 保持一致。
sudo adduser hduser sudo到sudo权限组

wget
http://www.gutenberg.org/etext/20417
wget
http://www.gutenberg.org/etext/5000
wget
http://www.gutenberg.org/etext/4300

VPS:搬瓦工(128m)
为网络安全,限制了ssh接口。
vps系统环境也ubuntu x_86_64(ubuntu x_86)

/root/.ssh/authorized_keys
这个文件里,这个文件相当给看白名单,凡是在这白明白存储的 秘钥对应的机器,登录时都是匪密码登录的。

Hadoop 1.0.3

sample使用的Hadoop
1.0.3,且文章历史比较漫长,为了维持环境之一律。备份下载地址

wget
https://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/hadoop-1.0.3.tar.gz

这种方式转主机名急需再开才能够永远生效,因为主机名属于本参数。

SSH客户端配置(主动拜访-guest)

  • 配备地址:/etc/ssh/ssh_config
  • 安装默认访问端口

host *
Port <端口号>

  • reboot后生效

sudo apt-get install sun-java6-jdk
package已经让移除,需要再行apt-get update

tar -xvf jdk-7u51-linux-x64.tar.gz

目的

  • 学习HDFS&MapRedue&BigTable(Hadoop架构)
  • 加强针对性Python数据结构&语法了解

1)安装jdk

后续

  • Spark&MapReduce范式上&对比
  • YARN
  • Thrift

#!/usr/bin/env python

from operator import itemgetter
import sys

current_word = None
current_count = 0
word = None#每个词

# input comes from STDIN
for line in sys.stdin:
    # remove leading and trailing whitespace
    line = line.strip()

    # parse the input we got from mapper.py
    word, count = line.split('\\t', 1)

    # convert count (currently a string) to int
    try:
        count = int(count)#转类型
    except ValueError:
        # count was not a number, so silently
        # ignore/discard this line
        continue

    # this IF-switch only works because Hadoop sorts map output
    # by key (here: word) before it is passed to the reducer
    if current_word == word:#出现连续数字则统计(不连续不统计)
        current_count += count
    else:
        if current_word:
            # write result to STDOUT
            print '%s\\t%s' % (current_word, current_count)
        current_count = count
        current_word = word
#迭代结束
# do not forget to output the last word if needed!
if current_word == word:
    print '%s\\t%s' % (current_word, current_count)

#!/usr/bin/env python
"""A more advanced Reducer, using Python iterators and generators."""

from itertools import groupby
from operator import itemgetter
import sys

def read_mapper_output(file, separator='\\t'):
    for line in file:
        yield line.rstrip().split(separator, 1)

def main(separator='\\t'):
    # input comes from STDIN (standard input)
    data = read_mapper_output(sys.stdin, separator=separator)
    # groupby groups multiple word-count pairs by word,
    # and creates an iterator that returns consecutive keys and their group:
    #   current_word - string containing a word (the key)
    #   group - iterator yielding all ["<current_word>", "<count>"] items
    #itertools.groupby(iterator,keyfunc)连续的值[](https://docs.python.org/dev/library/itertools.html#itertools.groupby)
    for current_word, group in groupby(data, itemgetter(0)):#operator.itemgetter()[](http://blog.csdn.net/dongtingzhizi/article/details/12068205)
        try:
            total_count = sum(int(count) for current_word, count in group)
            print "%s%s%d" % (current_word, separator, total_count)
        except ValueError:
            # count was not a number, so silently discard this item
            pass

if __name__ == "__main__":
    main()

#!/usr/bin/env python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:#第一次迭代,每一行
    # remove leading and trailing whitespace
    line = line.strip()
    # split the line into words
    words = line.split()#分词
    # increase counters
    for word in words:#第二期迭代(嵌套),每个词
        # write the results to STDOUT (standard output);
        # what we output here will be the input for the
        # Reduce step, i.e. the input for reducer.py
        #
        # tab-delimited; the trivial word count is 1
        print '%s\\t%s' % (word, 1)

#!/usr/bin/env python
"""A more advanced Mapper, using Python iterators and generators."""

import sys

def read_input(file):
    for line in file:#每一行
        # split the line into words
        yield line.split()#分词

def main(separator='\\t'):
    # input comes from STDIN (standard input)
    data = read_input(sys.stdin)
    for words in data:#每一行
        # write the results to STDOUT (standard output);
        # what we output here will be the input for the
        # Reduce step, i.e. the input for reducer.py
        #
        # tab-delimited; the trivial word count is 1
        for word in words:#每个词
            print '%s%s%d' % (word, separator, 1)

if __name__ == "__main__":
    main()

1.配备主机名

SSH服务端配置(被动访问-host)

  • 配备地址:/etc/ssh/sshd_config
  • bandwagonhost 以服务器安全,会随便分配SSH端口(非默认22)
  • 出于服务端和客户端变量(eg.LANG)冲突,需要注释掉locale变量

\# AcceptEnv LANG LC_*

#reference

  • reboot后生效

5.装以及安排jdk

SSH登陆后怎么修改Ubuntu root角色密码

修改vps密码:

passwd root

#reference

当hadoop02节点执行上述上述手续,让hadoop02节点连接hadoop01免密码登录

范围

莫讲话具体操作系统层面的法则,主要描述逻辑与备忘遇到的坑。

 图片 1

故可以组合使用。先改配置文件,然后实施:hostname
hadoop01 。可以高达不还开或还开都是主机名都是与一个底目的

而是这凡急需输入密码的,所以若当hadoop01节点上

0.停歇防火墙

推行:ssh-copy-id root@hadoop01(上面已经给有)

布环境变量

1:vi /etc/profile

2:在尾行添加

#set java environment

JAVA_HOME=/usr/local/src/java/jdk1.7.0_51

JAVA_BIN=/usr/local/src/java/jdk1.7.0_51/bin

PATH=$JAVA_HOME/bin:$PATH

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

export JAVA_HOME JAVA_BIN PATH CLASSPATH

保留退出

3:source /etc/profile 使反的布局立即生效

4:java -version 查看JDK版本信息。如出示1.7.0说明成功。

执行: vi /etc/profile

2)在尾行添加

#set java environment

JAVA_HOME=/usr/local/src/java/jdk1.7.0_51

PATH=$JAVA_HOME/bin:$PATH

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

export JAVA_HOMEPATH CLASSPATH

封存退出

3)source /etc/profile 使反的布立即生效

4)java -version 查看JDK版本信息。如出示1.7.0证明成功。

6.达传和解压hadoop安装包

执行:tar -xvf hadoop……(包名)

目说明:

bin目录:命令脚本

etc/hadoop:存放hadoop的配备文件

lib目录:hadoop运行的依赖jar包

sbin目录:启动暨关闭hadoop等一声令下还在此地

libexec目录:存放的呢是hadoop命令,但貌似不常用

极致常用之就算是bin和etc目录

7.配置hadoop-env.sh

是文件里写的凡hadoop的环境变量,主要修改hadoop的java_home路径

切换到 etc/hadoop(cd etc/hadoop)目录

执行:vim hadoop-env.sh

修改java_home路径和hadoop_conf_dir
路径(自己本机的安装目录)

图片 2

接下来实施:**source
hadoop-env.sh **让配置立即生效

8.修改core-site.xml

在 etc/hadoop 目录下

执行:**vim core-site.xml**

布置如下:

 图片 3

<configuration>

<!–用来指定hdfs的顶头上司,namenode的地方–>

<property>

<name>fs.default.name</name>

<value>hdfs://hadoop01:9000<value>

</property>

<!–用来指定hadoop运行时起文书的存放目录–>

<property>

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

<value>/usr/soft/hadoop-2.7.1/tmp</value>

</property>

</configuration>

9.修改vim hdfs-site .xml

布局如下:

 图片 4

<configuration>

<!–指定hdfs保存数据副本的数,包括自己,默认值是3–>

<!–如果是地下分布模式,此值是1–>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<!–设置 hdfs 的操作权限, false 表示其余用户还可以当 hdfs 上操作文件–>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>

10.修改vim mapred-site.xml

夫文件开始时凡无底,有的是模板文件,mapred-site.xml.template

从而用拷贝一卖,并重命名为mapred-site.xml

执行:**cp mapred-site.xml.template
mapred-site.xml**

安排如下:

图片 5

<configuration>

<property>

<!–指定mapreduce运行在yarn上–>

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

<value>yarn</value>

</property>

</configuration>

yarn是资源协调工具,

11.修改vim yarn-site.xml

布局如下:

 图片 6

<configuration>

<!–Site specific YARN configuration
properties –>

<property>

<!–指定yarn的老大resoucemanager的地址–>

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

<value>hadoop01</value>

</property>

<property>

<!–NodeManager获取数据的法–>

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

<value>mapreduce_shuffle</value>

</property>

</configuration>

12.配置vim slaves文件

图片 7

13.配置hadoop的环境变量 

配置代码:**vim /etc/profile**

图片 8

HADOOP_HOME=/usr/soft/hadoop-2.7.1JAVA_HOME=/usr/local/src/java/jdk1.7.0_51

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

PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

export JAVA_HOME PATH CLASSPATH
HADOOP_HOME

14.格式化namenode

为什么要格式化?

执行:**hadoop namenode
-format**

只要不好使,可以再次开linux

当出现:successfully,证明格式化成功

 图片 9

15.启动Hadoop

cd hadoop-2.7.1/sbin (进入hadoop安装目录后执行)

./start-dfs.sh或者sh start-dfs.sh

16.停止Hadoop

./stop-dfs.sh 或者sh
stop-dfs.sh

注:如果当起步时,报错:Cannot find
configuration directory: /etc/hadoop

解决办法:

编辑etc/hadoop下的hadoop-env.sh 文件,添加如下配置信息:

图片 10

export
HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop

然后实施source
hadoop-env.sh 使配置立即生效

执行:**start-yarn.sh** 启动yarn相关的劳动

当浏览器访问:

192.168.161.41:50070 来聘 hadoop 的田间管理页面(必须是上下一心本机的ip)

 

大家只要感兴趣,转载本文,请注明出处

执行:**ssh-copy-id
root@hadoop01**

当hadoop01再次通过ssh远程登录hadoop02时,发现无待输入密码了。

执行:service iptables
stop 这个令关闭了防火墙后,如果重新开,防火墙会重新树立,所以,如果想再也开后防火墙还关闭,需额外执行:chkconfig iptables off

执行: vim
/etc/sysconfig/network

3.安排不秘钥登录

若果是单机的伪分布式环境,节点需要登录自己节点,即hadoop01要登录hadoop01

每当hadoop01节点执行(执行了hostname hadoop01):

这会儿,hadoop02节点就是拿接收的hadoop秘钥保存在

安装步骤:

执行:vim
/etc/hosts(192.168.161.41凡自家自己机器的ip,这里要写副自己本机的ip)

 资料准备:

  Jdk下载(文中使用1.7,这里给得1.8,不影响使用):http://pan.baidu.com/s/1kVEEJ91
密码:r22t

2.配置hosts文件

 图片 11

顾:主机名里不可知生出下滑线,或者特殊字符#$,不然会寻找不至主机导致无法起动

  Hadoop-2.7.1下载:http://pan.baidu.com/s/1o7LKaSU 密码:64du

变迁节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下

mkdir /usr/local/src/java

执行:ssh-keygen

接下来径直回车,直到出现仿佛的图形:

rz 上传jdk tar包

无独有偶大学毕业,接触很数目产生平等年的时间了,把自己之有就学笔记分享给大家,希望与热爱大数量的同伙等并念书,成长!

如若未思再度开,可以实行:hostname
hadoop01。但是这种改变是临时之,重开后会还原
原主机名。

 图片 12

图片 13

发表评论

电子邮件地址不会被公开。 必填项已用*标注