用户登录
用户注册

分享至

hadoop伪分布式环境搭建

  • 作者: 正在输入14793821
  • 来源: 51数据库
  • 2020-10-06
0.关闭防火墙
service iptables start;#立即开启防火墙,但是重启后失效。
service iptables stop;#立即关闭防火墙,但是重启后失效。

重启后生效
chkconfig iptables on;#开启防火墙,重启后生效
chkconfig iptables off;#关闭防火墙,重启后生效

1.配置主机名
!!!!!注意安装hadoop的集群主机名不能有下划线!!不然会找不到主机!无法启动!
配置主机名
$vi /etc/sysconfig/network
$source /etc/sysconfig/network
例如:
NETWORKING=yes
HOSTNAME=hadoop01

2.配置Hosts
vi /etc/hosts
填入以下内容
127.0.0.1 hadoop01
其他主机和ip对应信息。。。

3.配置面密码互通
生成自己的公钥和私钥,生成的公私钥将自动存放在/root/.ssh目录下。
$ ssh-keygen
把生成的公钥copy到远程机器上
$ ssh-copy-id [user]@[host]
此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。
$ ssh [host]
通过此命令远程连接,检验是否可以不需密码连接

4.安装JDK
通过fz将jdk安装包上传
解压安装包
tar -zxvf [jdk安装包位置]
配置环境变量
修改profile -- 这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
vim /etc/profile
在文件行尾加入配置后保存退出
export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $JAVA_HOME
java -version

5.安装hadoop
通过fz将hadoop安装包上传到linux
解压安装包
tar -zxvf [hadoop安装包位置]

6.配置hadoop
(1)修改 hadoop-env.sh
通过vim打开
vim [hadoop]/etc/hadoop/hadoop-env.sh
主要是修改java_home的路径
在hadoop-env.sh的第27行,把export JAVA_HOME=${JAVA_HOME}修改成具体的路径
重新加载使修改生效
source hadoop-env.sh
(2)修改 core-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/core-site.xml
增加namenode配置、文件存储位置配置
<configuration>
<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/home/park/work/hadoop-2.5.2/tmp</value>
</property>
</configuration>
(3)修改 hdfs-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/hdfs-site.xml
配置包括自身在内的备份副本数量。
<configuration>
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>

(4)修改 mapred-site.xml
说明:在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个
cp mapred-site.xml.template mapred-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/mapred-site.xml
配置mapreduce运行在yarn上
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

(5)修改 yarn-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/yarn-site.xml
配置
<configuration>
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

(6)修改 slaves

(7)配置hadoop的环境变量
vim /etc/profile
export HADOOP_HOME=/home/park/work/hadoop-2.5.2/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $HADOOP_HOME

(8)重启linux
$reboot
????为什么需要重启配置文件才起作用?原因不明????
(8)格式化namenode
进入 hadoop/bin 输入命令格式化namenode
hadoop namenode -format(hdfs namenode -format 以前的方式)
在格式化的时候,会有这样的输出:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted

7.启动hadoop
在/home/app/hadoop-2.6.0/sbin目录下
$start-all.sh

8.关闭hadoop
在/home/app/hadoop-2.6.0/sbin目录下
$stop-all.sh

9.hdfs命令
hadoop fs -mkdir /user/trunk
hadoop fs -ls /user
hadoop fs -lsr /user (递归的)
hadoop fs -put test.txt /user/trunk
hadoop fs -put test.txt . (复制到hdfs当前目录下,首先要创建当前目录)
hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最后1000字节)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的帮助文档)

10.通过浏览器访问hadoop管理页面
http://[server_ip]:50070
**如果访问不了有可能是服务器50070端口被关闭了。通过如下方式打开50070端口:
service iptables status #查询防火墙状态
service iptables start #开启防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开通特定端口
iptables -I INPUT -p tcp --dport 80 -j DROP #关闭特定端口
service iptables save #保存配置
service iptables restart #重启防火墙



  第一步: 安装jdk
因为 hadoop 运行必须安装 jdk 环境,因此在安装好 linux 后进入系统的第一步 便是安装 jdk ,安装过程和在 windows 环境中的安装步骤很类似,首先去oracle 官网 去下载安装包,然后直接进行解压。我自己解压在路径 /usr/jvm 下面,假如你的安装包现在已经下载在 jvm 文件夹下面,然后 按 ctrl+alt+t 进去命令行,然后输入
cd /usr/jvm
进入到jvm文件夹下面,然后再输入如下命令进行解压:
sudo tar -zxvf jdk-7u40-linux-i586.tar.gz

第二步: 配置环境变量
解压结束以后,像在 windows 系统中一样,需要配置环境变量,在 ubuntu 中设置 环境变量的过程为打开文件 /etc/profile ,因为权限的问题,因此在命令行需要输入 的是

sudo gedit /etc/profile

然后在根据提示输入用户密码即可,然后在文件最下面添加如下:

export java_home=/usr/jvm/jdk1.7.0_40

export classpath=".:$java_home/lib:$java_home/jre/lib$classpath"

export path="$java_home/bin:$java_home/jre/bin:/usr/hadoop/hadoop-1.2.1/bin:$path"

上面这三个以单词 export 开始的三个语句就类似于我们在 windows 中的环境变量中设置一样,而且在这个里面和 windows 中不同的是,在 windows 中使用 “;” 号来表示分隔,但是在 ubuntu 中是以 “:” 号来表示分隔。还需要注意的是,上面的路径都是我自己配置的时候的路径,因为我的 jdk 解压在 /usr/jvm 中,所以我的java_home 设置的是那个路径,而且如果安装的 jdk 版本不同那么后面的也不一样。同理在 classpath 路径中也是因为我自己的安装路径进行设置的,因此在配置过程中需要读者注意。在 path 路径中最后面还将 hadoop 的路径也添加了进去,因此在读者安装了 hadoop 后也将这个路径添加进环境变量 path 中去。
在配置完环境变量后,我们来将我们安装的 jdk 设置为 ubuntu 系统默认的jdk ,因为之前系统里面自带 openjdk ,在命令行里面输入如下:

sudo update-alternatives --install /usr/bin/java java /usr/jvm/jdk1.7.0_40/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/jvm/jdk1.7.0_40/bin/javac 300
sudo update-alternatives --config java

然后我们就可以在命令行输入 java -version 来进行察看 jdk 是否已经配置好了。

第三步: 安装hadoop
我们可以去 hadoop 官网上去下载安装包,我自己下载使用的是 hadoop-1.2.1.tar.gz ,然后当安装包下载结束后,将安装包解压到指定位置,我将安装包解压到了 /usr/hadoop 目录下面。
具体步骤是,像解压 jdk 一样,首先加入下载的 hadoop 安装包在 /usr/hadoop 文件夹下面。然后在命令行下进入 /usr/hadoop 文件,类似于上面的。然后输入解压命令如下
sudo tar -zxvf hadoop-1.2.1.tar.gz
后面的 hadoop 安装包名称具体看你下载的版本,我下载的是1.2.1版本的。 为了以后操作 /usr/hadoop 文件夹里面的文件方便,我们设置一下文件夹的权限,在命令行输入如下
sudo chown -hr long /usr/hadoop
注意:在上面的命令中,long是我自己此时登陆的用户名,因此你需要将那个改成你自己的用户名。

第四步: 配置hadoop环境变量
在上面解压完 hadoop 以后,现在我们来设置环境变量,其实在上面刚才我们配置 jdk 环境变量的时候,已经在 path 路径后面添加了 hadoop 安装目录的 bin 目录的路径,所以那个就代表环境变量已经设置好了,但是读者一定要注意,不要 copy,要明确自己的 hadoop 安装路径来进行配置。

第五步: 设置ssh(安全外壳协议)
推荐安装 openssh , hadoop 需要通过 ssh 来启动 slave 列表中各台主机的守护进程,因此 ssh 是必需安装的。虽然我们现在搭建的是一个伪分布式的平台,但是 hadoop 没有区分开集群式和伪分布式,对于伪分布式, hadoop 会采用与集群相同的处理方式,即按次序启动文件 conf/slaves 中记载的主机进程,只不过在伪分布式中 salve 为 localhost 而已,所以对于伪分布式, ssh 是必须的。
配置过程(首先确保连接上网络):
① 安装ssh,在命令行输入如下
sudo apt-get install openssh-server

② 配置可以免密码登陆本机
在命令行输入(注意其中的ssh前面还有一个 “ . ” 不要遗漏)

ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa

(解释一下上面这条命令, ssh-keygen 代表生成密钥; -t 表示指定生成的密钥 类型; dsa 是 dsa 密钥认证的意思; -p 用于提供密语(接着后面是两个单引号, 不要打错); -f 表示指定生成密钥文件)
这条命令完成后,会在当前文件夹下面的 .ssh 文件夹下创建 id_dsa 和 id_dsa.pub两个文件,这是 ssh 的一对私钥和公钥,把 id_dsa.pub (公钥)追加到授权的 key中去,输入如下命令:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

至此,免密码登陆本机已经配置完毕。
说明:一般来说,安装ssh时会自动在当前用户下创建.ssh这个隐藏文件夹,一般不会直接看到,除非安装好了以后,在命令行使用命令ls才会看到。

③ 输入 ssh localhost ,显示登陆成功信息。

第六步: 配置hadoop伪分布式模式
现在进入到安装 hadoop 的文件夹,找到里面的 conf 文件夹,点击进去。
配置 hadoop 环境文件 hadoop-env.sh
打开文件,找到某行有 ”# export java_home = ...” 字样的地方,去掉 “#” ,然后在等号后面填写你自己的 jdk 路径,比如像我自己的 jdk 路径,那就改为了 如下所示
“export java_home=/usr/jvm/jdk1.7.0_40”

配置 hadoop 的核心文件 core-site.xml
打开文件,会发现标签 中是空的,在空的地方添加如下配置



fs.default.name

hdfs://localhost:9000





dfs.replication

1





hadoop.tmp.dir

/home/long/tmp



(注意:在最后一个value值中,上面是long,是因为那是我的用户名,所以你需要将那个修改为你自己的用户名)

配置 hadoop 中 mapreduce 的配置文件 mapred-site.xml
打开文件,会发现标签 中是空的,在空的地方添加如下配置


mapred.job.tracker

localhost:9001



第七步: 格式化hadoop文件系统hdfs并启动hadoop
首次运行 hadoop 必须进行格式化 hadoop 文件系统,以后运行即可跳过。打开命令行,进入安装了 hadoop 的文件路径下,然后在命令行输入

bin/hadoop namenode -format

格式化文件系统,然后启动 hadoop ,在命令行里面输入

bin/start-all.sh

验证是否正常启动,在命令行里面输入 jps ,然后回车,如果在命令行里面出现如下类似画面(因为前面的数字可以不同)

3235 namenode

4113 jps

3819 jobtracker

4059 tasktracker

3721 secondarynamenode

3487 datanode

则说明已经正常启动。如果以后需要关闭 hadoop 的话,在 hadoop 安装的文件夹路径下面在命令行输入

bin/stop-all.sh

来关闭 hadoop 。

第八步: 跑一个hadoop中自带的wordcount程序,来体验一把
步骤如下(我在自己平台上的,读者可仿照实验):
1) 准备一个文本文件
首先我在桌面,新建了一个空白文档 test ,在里面输入一段话,或是几一些什么 单 词什么的,保存。

2) 将文本文件上传到 dfs 文件系统中的 input 目录下,打开命令行,进入到安装 hadoop 的文件夹下,然后输入如下

bin/hadoop dfs -copyfromlocal /home/long/桌面/test input

(注:如果 dfs 中不包含 input 目录的话就会自动创建一个)

3) 然后在命令行中输入如下命令,执行 wordcount 程序

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output

(注:因为这个程序是 hadoop 安装包里面自带的,就在 hadoop-examples-1.2.1.jar 中,后面的数字因为版本号的不同而不同,后面的 input 代表输入文件夹,output 代表输出文件夹 , 系统输出时会自动创建)
读者如果这个执行成功了,就会发现有很多输出信息,从屏幕上显示,当程序运行结束后。

4) 察看结果 在命令行里面输入

bin/hadoop dfs -cat output/part-r-00000

现在你就可以看见自己刚才输入文本里面的单词计数了。

至此,伪分布式搭建结束!



  第一步: 安装jdk
因为 hadoop 运行必须安装 jdk 环境,因此在安装好 linux 后进入系统的第一步 便是安装 jdk ,安装过程和在 windows 环境中的安装步骤很类似,首先去oracle 官网 去下载安装包,然后直接进行解压。我自己解压在路径 /usr/jvm 下面,假如你的安装包现在已经下载在 jvm 文件夹下面,然后 按 ctrl+alt+t 进去命令行,然后输入
cd /usr/jvm
进入到jvm文件夹下面,然后再输入如下命令进行解压:
sudo tar -zxvf jdk-7u40-linux-i586.tar.gz

第二步: 配置环境变量
解压结束以后,像在 windows 系统中一样,需要配置环境变量,在 ubuntu 中设置 环境变量的过程为打开文件 /etc/profile ,因为权限的问题,因此在命令行需要输入 的是

sudo gedit /etc/profile

然后在根据提示输入用户密码即可,然后在文件最下面添加如下:

export java_home=/usr/jvm/jdk1.7.0_40

export classpath=".:$java_home/lib:$java_home/jre/lib$classpath"

export path="$java_home/bin:$java_home/jre/bin:/usr/hadoop/hadoop-1.2.1/bin:$path"

上面这三个以单词 export 开始的三个语句就类似于我们在 windows 中的环境变量中设置一样,而且在这个里面和 windows 中不同的是,在 windows 中使用 “;” 号来表示分隔,但是在 ubuntu 中是以 “:” 号来表示分隔。还需要注意的是,上面的路径都是我自己配置的时候的路径,因为我的 jdk 解压在 /usr/jvm 中,所以我的java_home 设置的是那个路径,而且如果安装的 jdk 版本不同那么后面的也不一样。同理在 classpath 路径中也是因为我自己的安装路径进行设置的,因此在配置过程中需要读者注意。在 path 路径中最后面还将 hadoop 的路径也添加了进去,因此在读者安装了 hadoop 后也将这个路径添加进环境变量 path 中去。
在配置完环境变量后,我们来将我们安装的 jdk 设置为 ubuntu 系统默认的jdk ,因为之前系统里面自带 openjdk ,在命令行里面输入如下:

sudo update-alternatives --install /usr/bin/java java /usr/jvm/jdk1.7.0_40/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/jvm/jdk1.7.0_40/bin/javac 300
sudo update-alternatives --config java

然后我们就可以在命令行输入 java -version 来进行察看 jdk 是否已经配置好了。

第三步: 安装hadoop
我们可以去 hadoop 官网上去下载安装包,我自己下载使用的是 hadoop-1.2.1.tar.gz ,然后当安装包下载结束后,将安装包解压到指定位置,我将安装包解压到了 /usr/hadoop 目录下面。
具体步骤是,像解压 jdk 一样,首先加入下载的 hadoop 安装包在 /usr/hadoop 文件夹下面。然后在命令行下进入 /usr/hadoop 文件,类似于上面的。然后输入解压命令如下
sudo tar -zxvf hadoop-1.2.1.tar.gz
后面的 hadoop 安装包名称具体看你下载的版本,我下载的是1.2.1版本的。 为了以后操作 /usr/hadoop 文件夹里面的文件方便,我们设置一下文件夹的权限,在命令行输入如下
sudo chown -hr long /usr/hadoop
注意:在上面的命令中,long是我自己此时登陆的用户名,因此你需要将那个改成你自己的用户名。

第四步: 配置hadoop环境变量
在上面解压完 hadoop 以后,现在我们来设置环境变量,其实在上面刚才我们配置 jdk 环境变量的时候,已经在 path 路径后面添加了 hadoop 安装目录的 bin 目录的路径,所以那个就代表环境变量已经设置好了,但是读者一定要注意,不要 copy,要明确自己的 hadoop 安装路径来进行配置。

第五步: 设置ssh(安全外壳协议)
推荐安装 openssh , hadoop 需要通过 ssh 来启动 slave 列表中各台主机的守护进程,因此 ssh 是必需安装的。虽然我们现在搭建的是一个伪分布式的平台,但是 hadoop 没有区分开集群式和伪分布式,对于伪分布式, hadoop 会采用与集群相同的处理方式,即按次序启动文件 conf/slaves 中记载的主机进程,只不过在伪分布式中 salve 为 localhost 而已,所以对于伪分布式, ssh 是必须的。
配置过程(首先确保连接上网络):
① 安装ssh,在命令行输入如下
sudo apt-get install openssh-server

② 配置可以免密码登陆本机
在命令行输入(注意其中的ssh前面还有一个 “ . ” 不要遗漏)

ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa

(解释一下上面这条命令, ssh-keygen 代表生成密钥; -t 表示指定生成的密钥 类型; dsa 是 dsa 密钥认证的意思; -p 用于提供密语(接着后面是两个单引号, 不要打错); -f 表示指定生成密钥文件)
这条命令完成后,会在当前文件夹下面的 .ssh 文件夹下创建 id_dsa 和 id_dsa.pub两个文件,这是 ssh 的一对私钥和公钥,把 id_dsa.pub (公钥)追加到授权的 key中去,输入如下命令:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

至此,免密码登陆本机已经配置完毕。
说明:一般来说,安装ssh时会自动在当前用户下创建.ssh这个隐藏文件夹,一般不会直接看到,除非安装好了以后,在命令行使用命令ls才会看到。

③ 输入 ssh localhost ,显示登陆成功信息。

第六步: 配置hadoop伪分布式模式
现在进入到安装 hadoop 的文件夹,找到里面的 conf 文件夹,点击进去。
配置 hadoop 环境文件 hadoop-env.sh
打开文件,找到某行有 ”# export java_home = ...” 字样的地方,去掉 “#” ,然后在等号后面填写你自己的 jdk 路径,比如像我自己的 jdk 路径,那就改为了 如下所示
“export java_home=/usr/jvm/jdk1.7.0_40”

配置 hadoop 的核心文件 core-site.xml
打开文件,会发现标签 中是空的,在空的地方添加如下配置



fs.default.name

hdfs://localhost:9000





dfs.replication

1





hadoop.tmp.dir

/home/long/tmp



(注意:在最后一个value值中,上面是long,是因为那是我的用户名,所以你需要将那个修改为你自己的用户名)

配置 hadoop 中 mapreduce 的配置文件 mapred-site.xml
打开文件,会发现标签 中是空的,在空的地方添加如下配置


mapred.job.tracker

localhost:9001



第七步: 格式化hadoop文件系统hdfs并启动hadoop
首次运行 hadoop 必须进行格式化 hadoop 文件系统,以后运行即可跳过。打开命令行,进入安装了 hadoop 的文件路径下,然后在命令行输入

bin/hadoop namenode -format

格式化文件系统,然后启动 hadoop ,在命令行里面输入

bin/start-all.sh

验证是否正常启动,在命令行里面输入 jps ,然后回车,如果在命令行里面出现如下类似画面(因为前面的数字可以不同)

3235 namenode

4113 jps

3819 jobtracker

4059 tasktracker

3721 secondarynamenode

3487 datanode

则说明已经正常启动。如果以后需要关闭 hadoop 的话,在 hadoop 安装的文件夹路径下面在命令行输入

bin/stop-all.sh

来关闭 hadoop 。

第八步: 跑一个hadoop中自带的wordcount程序,来体验一把
步骤如下(我在自己平台上的,读者可仿照实验):
1) 准备一个文本文件
首先我在桌面,新建了一个空白文档 test ,在里面输入一段话,或是几一些什么 单 词什么的,保存。

2) 将文本文件上传到 dfs 文件系统中的 input 目录下,打开命令行,进入到安装 hadoop 的文件夹下,然后输入如下

bin/hadoop dfs -copyfromlocal /home/long/桌面/test input

(注:如果 dfs 中不包含 input 目录的话就会自动创建一个)

3) 然后在命令行中输入如下命令,执行 wordcount 程序

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output

(注:因为这个程序是 hadoop 安装包里面自带的,就在 hadoop-examples-1.2.1.jar 中,后面的数字因为版本号的不同而不同,后面的 input 代表输入文件夹,output 代表输出文件夹 , 系统输出时会自动创建)
读者如果这个执行成功了,就会发现有很多输出信息,从屏幕上显示,当程序运行结束后。

4) 察看结果 在命令行里面输入

bin/hadoop dfs -cat output/part-r-00000

现在你就可以看见自己刚才输入文本里面的单词计数了。

至此,伪分布式搭建结束!



  网页链接
软件
前端设计
程序设计
Java相关