欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos7 安装hadoop2.7.3遇到的各种问题

程序员文章站 2022-07-14 16:35:25
...

centos7 安装hadoop2.7.3遇到的各种问题

解决方案:在hadoop-env.sh中添加如下语句:

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native -Djava.net.preferIPv4Stack=true"

centos7 安装hadoop2.7.3遇到的各种问题

解决方案:执行以下语句

schematool  -dbType derby -initSchema

centos7 安装hadoop2.7.3遇到的各种问题

解决方案:

cd /usr/local/hive/scripts/metastore/upgrade/derby
vi hive-schema-2.3.0.derby.sql

将NUCLEUS_ASCII函数的定义注释掉或删除。

1.namenode没有启动
centos7 安装hadoop2.7.3遇到的各种问题

解决方案:格式化namenode

hdfs namenode -format

此时向HDFS拷贝文件发现出现如下错误:

hdfs dfs -mkdir -p /user/linyimin/input
hdfs dfs -copyFromLocal /usr/local/hadoop/etc/hadoop/*xml /user/linyimin/input

centos7 安装hadoop2.7.3遇到的各种问题

再次运行jps发现,datanode没有启动。

centos7 安装hadoop2.7.3遇到的各种问题

经过查询资料发现:
当我们使用hdfs namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件hdfs-site.xml中dfs.namenode.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode数据文件夹(这个文件夹为自己配置文件中dfs.dataNode.name.dir的路径)中保存的current/VERSION文件中的clustreID的值是第一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致

所以,在格式化之前先删除 dfs.name.dir指定目录下的所有文件(注意删目录下所有的文件及文件夹而不是删除该目录)

hdfs namenode -format
start-all.sh
jps

centos7 安装hadoop2.7.3遇到的各种问题

此时,拷贝文件成功。运行hadoop下自带的例子,也能成功运行:

 hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /user/linyimin/input output

centos7 安装hadoop2.7.3遇到的各种问题

2.hive查询触发mapreduce任务出现异常

Exception in thread "main" java.lang.OutOfMemoryError: PermGen space

centos7 安装hadoop2.7.3遇到的各种问题

原因:客户端内存不足

解决方案适当添加内存

export HADOOP_CLIENT_OPTS="-XX:MaxPermSize=128M $HADOOP_CLIENT_OPTS"

有一个问题没有想明白:
在hadoop-env.sh文件中添加了如下语句:

export HADOOP_CLIENT_OPTS="-XX:MaxPermSize=1024M $HADOOP_CLIENT_OPTS"

但是没有起作用。

3.hive启动出现异常

Cannot create directory /user/hive/tmp/root/c819e539-1995-448f-89a8-fb72bf93976e. Name node is in safe mode.

centos7 安装hadoop2.7.3遇到的各种问题

原因:Name node is in safe mode.这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。
解决方案:

  • 只需要等待一会儿安全模式结束即可 。
  • 使用命令手动离开安全模式
hdfs dfsadmin -safemode leave  

centos7 安装hadoop2.7.3遇到的各种问题

用户可以通过 hdfs dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。


beeline下执行命令出现下列异常:

Error: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Permission denied: user=hive, access=EXECUTE, inode="/tmp/hadoop-yarn/staging/hive/.staging":root:supergroup:drwx------

centos7 安装hadoop2.7.3遇到的各种问题

解决方案:将HDFS上的文件夹/tmp设为其他用户可读

hdfs dfs -chmod -R 744 /tmp

hive创建数据库出现如下异常

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

centos7 安装hadoop2.7.3遇到的各种问题

经过查阅资料了解到mysql通过jdbc链接的时候会进行测试’SET OPTION SQL_SELECT_LIMIT=DEFAULT’,但是5.6以后的版本弃用了set的方式。我用的数据库版本是5.6但是用的驱动版本是mysql-connector-java-5.1.17.jar。所以需要下载新版本的驱动,将mysql-connector-java-5.1.17.jar替换成mysql-connector-java-5.1.43.jar,上述问题即可解决。